数组将0添加为第一个元素,而不是我的输入[java]
我一直在写这个程序来计算字符串/一行字符串中的元音。现在,我已经完成了整个程序,它确实正确地输出了所有输入的元音数,但问题是,由于某种原因,数组的第一个输入总是0/不存在 我在这里给你一个例子和代码,很难解释:数组将0添加为第一个元素,而不是我的输入[java],java,arrays,Java,Arrays,我一直在写这个程序来计算字符串/一行字符串中的元音。现在,我已经完成了整个程序,它确实正确地输出了所有输入的元音数,但问题是,由于某种原因,数组的第一个输入总是0/不存在 我在这里给你一个例子和代码,很难解释: Scanner sc = new Scanner(System.in); int numberOfEntries = sc.nextInt() //this would be the number of lines of strings String[] array = new Stri
Scanner sc = new Scanner(System.in);
int numberOfEntries = sc.nextInt() //this would be the number of lines of strings
String[] array = new String[numberOfEntries];
int k = 0;
while(sc.hasNext() && k < numberOfEntries){
array[k] = sc.nextLine();
k++;
}
如果我输出阵列,我将得到以下输出:
[, abcd, efgh, ijkl, mnop]
我已经试着只用了
for(int i = 0; i < array.length; i++){
array[i] = sc.nextLine();
}
认为它可能解决问题,但没有改变。我现在没有主意了,虽然我确信我只是在某个地方犯了一些愚蠢的小错误,但我就是看不出来
你好,George在您调用nextInt后,由于缓冲区中的“\n”出现了空行。键入整数后按Enter键。Scanner在调用nextInt时使用整数,但它不接触后面的“\n” 要解决此问题,请在读取int后调用nextLine,并放弃结果:
int numberOfEntries = sc.nextInt();
sc.nextLine(); // Throw away the '\n' after the int
由于调用nextInt后缓冲区中存在“\n”,因此会得到空行。键入整数后按Enter键。Scanner在调用nextInt时使用整数,但它不接触后面的“\n” 要解决此问题,请在读取int后调用nextLine,并放弃结果:
int numberOfEntries = sc.nextInt();
sc.nextLine(); // Throw away the '\n' after the int
语句int numberOfEntries=sc.nextInt;读取数字,将下一个字符保留为换行符,作为下一个要读取的字符
对sc.nextLine的第一次调用会看到这一新行,并将其识别为空行的结尾。对于示例输入,这会导致调用返回空字符串
解决方案是在sc.nextLine之后添加对sc.nextLine的额外调用以使用,然后丢弃最后一个数字之后直到行尾的所有字符
实际上。。。这是扫描器API中相当常见的初学者错误。语句int numberOfEntries=sc.nextInt;读取数字,将下一个字符保留为换行符,作为下一个要读取的字符
对sc.nextLine的第一次调用会看到这一新行,并将其识别为空行的结尾。对于示例输入,这会导致调用返回空字符串
解决方案是在sc.nextLine之后添加对sc.nextLine的额外调用以使用,然后丢弃最后一个数字之后直到行尾的所有字符
实际上。。。这是Scanner API中一个相当常见的初学者错误。这是因为Scanner.nextLine方法不会读取输入的最后一个换行符,因此在下次调用Scanner.nextLine时会使用该换行符 这是因为Scanner.nextLine方法不会读取输入的最后一个换行符,因此在下次调用Scanner.nextLine时会使用该换行符 可能的重复可能的重复