Java 未填充数组值
在下面的程序中,用户输入要插入的城市名称的编号,然后用该大小初始化一个字符串数组。然后我尝试迭代循环,并用从用户插入的值(城市名称)初始化数组的每个索引。 但当我试图从数组中打印值时,它要求少一个值。我的意思是,若我说城市的数量是2,那个么我的循环应该迭代两次,两次,我应该插入值,但我只能插入值一次。 调试时,我意识到第0个元素正在从某个地方自行初始化。我无法找到确切的问题Java 未填充数组值,java,arrays,java.util.scanner,Java,Arrays,Java.util.scanner,在下面的程序中,用户输入要插入的城市名称的编号,然后用该大小初始化一个字符串数组。然后我尝试迭代循环,并用从用户插入的值(城市名称)初始化数组的每个索引。 但当我试图从数组中打印值时,它要求少一个值。我的意思是,若我说城市的数量是2,那个么我的循环应该迭代两次,两次,我应该插入值,但我只能插入值一次。 调试时,我意识到第0个元素正在从某个地方自行初始化。我无法找到确切的问题 import java.util.Scanner; public class EmptyStringGenerator
import java.util.Scanner;
public class EmptyStringGenerator {
public static void main(String []ard) {
Scanner scanner = new Scanner(System.in);
System.out.println("How many cities?");
String[]favoriteCities = new String[scanner.nextInt()];
for(int i=0;i<favoriteCities.length;i++){
favoriteCities[i]=scanner.nextLine();
}
for(String str:favoriteCities){
System.out.print(str+" ");
}
}
}
输出:
Delhi
第0行是“2”之后的结束行
nextInt()
不读取该值。在读取数字后添加一个虚拟的nextLine()
。问题在于,您使用读取整数,但不要使用行尾!线路的其余部分未被处理,下一个呼叫从该点开始
nextLine()文档
使此扫描仪前进超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头
要更正此问题,请执行以下操作:
String[]favoriteCities = new String[scanner.nextInt()]; //read int
//consume line end, and do nothing with it
scanner.nextLine();
//now read the cities.
for(int i=0;i<favoriteCities.length;i++){
favoriteCities[i]=scanner.nextLine();
}
String[]收藏夹城市=新字符串[scanner.nextInt()]//读整型
//使用line end,而不使用它
scanner.nextLine();
//现在读城市。
对于(int i=0;i使用next()
方法而不是nextLine()
。因为nextLine()
读取nextLine()方法跳过的新行。
使此扫描仪前进超过当前行并返回跳过的输入
查找并返回此扫描程序中的下一个完整令牌
因此,代码现在将被删除
public static void main(String []ard)
{
Scanner scanner = new Scanner(System.in);
System.out.println("How many cities?");
String[]favoriteCities = new String[scanner.nextInt()];
for(int i=0;i<favoriteCities.length;i++)
{
favoriteCities[i]=scanner.next();
}
for(String str:favoriteCities)
{
System.out.print(str+" ");
}
}
publicstaticvoidmain(字符串[]ard)
{
扫描仪=新的扫描仪(System.in);
System.out.println(“有多少个城市?”);
String[]FavoriteCity=新字符串[scanner.nextInt()];
对于(int i=0;i如果我正确理解OP问题
,输入是int
和城市名称
,输出应该是城市名称
的次数(int),例如2德里
输出德里
,但他只得到德里
解决方案
String[]收藏夹城市=新字符串[scanner.nextInt()];
字符串cityToBeAdded=scanner.next();
对于(int i=0;i)以及它应该是什么?请添加@Anuj Kumar Jha:如何在几秒钟内调试它:在调试器/IDE中遍历代码,或者在循环中添加System.out.println(“i=“+i”);
,以查看调试时发生了什么。
public static void main(String []ard)
{
Scanner scanner = new Scanner(System.in);
System.out.println("How many cities?");
String[]favoriteCities = new String[scanner.nextInt()];
for(int i=0;i<favoriteCities.length;i++)
{
favoriteCities[i]=scanner.next();
}
for(String str:favoriteCities)
{
System.out.print(str+" ");
}
}
String[]favoriteCities = new String[scanner.nextInt()];
String cityToBeAdded = scanner.next();
for(int i=0;i<favoriteCities.length;i++){
favoriteCities[i]=cityToBeAdded;
}
for(String str:favoriteCities){
System.out.print(str+" ");
}