我一直在编写此程序来计算字符串/一行字符串中的元音。现在,我已经完成了整个程序,并且可以正确输出所有输入的元音数量,但是问题是,由于某种原因,数组的第一个输入始终为0 /不存在。
我会在这里给你一个例子和代码,这很难解释:
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++;
}
因此,这是与问题相关的代码部分,其余部分都很好。由于某些原因,当我输入以下行时:
5
abcd
efgh
ijkl
mnop
qrst
如果我将数组打印出来,将会得到以下输出:
[, abcd, efgh, ijkl, mnop]
我试过只使用
for(int i = 0; i < array.length; i++){
array[i] = sc.nextLine();
}
认为它可以解决问题,但没有任何改变。我现在没有主意了,尽管我确定我只是在某个地方犯了一些愚蠢的小错误,但我没有看到它。
亲切的问候,乔治
该语句int numberOfEntries = sc.nextInt();
读取数字,将下一个字符(换行符)保留为要读取的下一个字符。
第一次sc.nextLine()
看到该换行符并将其识别为(空)行的结尾。对于您的示例输入,这将导致调用返回一个空字符串。
解决方案是在sc.nextLine()
后面添加一个额外的调用,sc.nextInt()
以消耗(然后丢弃)最后一位到行尾的所有字符。
(实际上...这是Scanner
API的一个相当普遍的初学者错误。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句