提问人:user9342976 提问时间:6/18/2023 更新时间:6/19/2023 访问量:45
将值从一个方法传递到另一个方法时出现空指针异常错误
Null Pointer Exception error while passing value from one methord to another
问:
我正在尝试将 ArrayDeque q 的最后一个索引值从 Solution 类的 methord distributeTicket() 返回到类 GFG 的 methord main()。
//{ Driver Code Starts
//Initial Template for Java
import java.io.*;
import java.util.*;
class GFG{
public static void main(String args[]) throws IOException {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out=new PrintWriter(System.out);
int t = Integer.parseInt(in.readLine());
while (t-- > 0) {
String s[]=in.readLine().trim().split(" ");
int n=Integer.parseInt(s[0]);
int k=Integer.parseInt(s[1]);
Solution ob=new Solution();
out.println(ob.distributeTicket(n,k));
}
out.close();
}
}
// } Driver Code Ends
//User function Template for Java
class Solution {
public static int distributeTicket(int N,int K)
{
ArrayDeque<Integer> q = new ArrayDeque<>();
for(int i=1;i<=N;i++){
q.add(i);
}
while(true){
if(K==1 && q.size()==2)
return q.peekLast();//.intValue();
if(q.size() > K){
for(int i=1;i<=K;i++)
q.pollFirst();
for(int i=1;i<=K;i++)
q.pollLast();
}
else
return q.peekLast();//.intValue();
}
}
}
在使用自定义输入执行代码时,代码会给出预期的输出。
For Input:
25 1
Your Output:
13
Expected Output:
13
但是在提交代码时,它会抛出异常。
For Input:
25 1
Your Output:
Exception in thread "main" java.lang.NullPointerException
at Solution.distributeTicket(File.java:48)
at GFG.main(File.java:17)
Its Correct output is:
13
请告诉我我做错了什么以及解决方案是什么。
答:
0赞
Anon
6/19/2023
#1
您在 2 个 fors 之间缺少这一行,您收到的错误消息不是针对 但如果您输入if (q.size() <= K) return q.getFirst();
25 1
24 2
public static int distributeTicket(int N, int K) {
ArrayDeque<Integer> q = new ArrayDeque<>();
for (int i = 1; i <= N; i++) {
q.add(i);
}
while (true) {
if (K == 1 && q.size() == 2) return q.getLast();
if (q.size() > K) {
for (int i = 1; i <= K; i++) {
q.pollFirst();
}
if (q.size() <= K) return q.getFirst();
for (int i = 1; i <= K; i++) {
q.pollLast();
}
} else {
return q.getLast();
}
}
}
评论
return q.peekLast()
NullPointerException
q
for
q.add(i)
q
null