java.util.Scanner.nextInt(未知来源)失败
java.util.Scanner.nextInt(Unknown Source) failing
我一直在尝试获取一个整数数组,但一直失败。我试图在数组中找到缺失的元素。这是我的代码。我在这里做错了什么?
import java.util.Scanner;
public class GFG {
public static void main(String[] args) {
int T,N,i,j=0,k=1;
int C[]= new int[100];
Scanner sc=new Scanner(System.in);
T=sc.nextInt();
for(i=0;i<T;i++)
{
N=sc.nextInt();
for(j=0;j<N;j++)
{
C[j]=sc.nextInt();
}
while(k<=N)
{
if(k==C[j])
{
k++;
j++;
}
else
{
System.out.println(k);
k++;
j++;
}
}
}
sc.close();
}
}
我试图在一个由连续自然数组成的整数数组中找到缺失的元素
输入:
1 //test cases
4 //array length
1 2 3 5 // array elements
期望的输出:
4
但是输出是
1
2
3
4
比较未执行。为什么?
在我的计算机上,根据您提到的输入,程序打印从 1 到 96 的数字,然后在 if(k==C[j])
.
行崩溃并显示 java.lang.ArrayIndexOutOfBoundsException: 100
您的代码存在许多潜在问题。我只提两个,留给你自己看看是否能找到更多。
- 循环后
for(j=0;j<N;j++)
j
等于 N
(在本例中为 4)。您需要在下一次循环之前将其重置为 0。
k
永远不会变为 0,因此您的循环 while(k!=0)
永远运行,或者更准确地说,它超出了数组的边界,这会在您尝试访问数组元素时导致崩溃在索引 100 处(如您所知,索引为 0 到 99)。您需要另一种方法来停止循环。
我一直在尝试获取一个整数数组,但一直失败。我试图在数组中找到缺失的元素。这是我的代码。我在这里做错了什么?
import java.util.Scanner;
public class GFG {
public static void main(String[] args) {
int T,N,i,j=0,k=1;
int C[]= new int[100];
Scanner sc=new Scanner(System.in);
T=sc.nextInt();
for(i=0;i<T;i++)
{
N=sc.nextInt();
for(j=0;j<N;j++)
{
C[j]=sc.nextInt();
}
while(k<=N)
{
if(k==C[j])
{
k++;
j++;
}
else
{
System.out.println(k);
k++;
j++;
}
}
}
sc.close();
}
}
我试图在一个由连续自然数组成的整数数组中找到缺失的元素
输入:
1 //test cases
4 //array length
1 2 3 5 // array elements
期望的输出:
4
但是输出是
1
2
3
4
比较未执行。为什么?
在我的计算机上,根据您提到的输入,程序打印从 1 到 96 的数字,然后在 if(k==C[j])
.
java.lang.ArrayIndexOutOfBoundsException: 100
您的代码存在许多潜在问题。我只提两个,留给你自己看看是否能找到更多。
- 循环后
for(j=0;j<N;j++)
j
等于N
(在本例中为 4)。您需要在下一次循环之前将其重置为 0。 k
永远不会变为 0,因此您的循环while(k!=0)
永远运行,或者更准确地说,它超出了数组的边界,这会在您尝试访问数组元素时导致崩溃在索引 100 处(如您所知,索引为 0 到 99)。您需要另一种方法来停止循环。