我正在尝试用java编写一个程序,在数组中收集用户最喜欢的名称,然后在最后打印这些名称。
注意:数组的长度应由用户输入的名称数定义。
请看一下代码并告诉我如何修复它。这是我到目前为止所做的
Scanner input = new Scanner(System.in);
System.out.println("What are your most favorite names?");
String[] favNames = new String[i];
int i = 1;
while (true){
System.out.print("Please enter favorite name number" + i + ": ");
favNames[i-1] = input.next();
System.out.print("Is that all?");
String ans = input.next().toLowerCase();
if(ans.startsWith("y")){
System.out.print("Here is the completed list of your favorite names:\n" + Arrays.toString(favNames));
break;
}
i++;
}
这是我得到的错误代码:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: variable i
location: class JavaApplication13
at JavaApplication13.main(JavaApplication13.java:52)
Java Result: 1
我尝试在循环中移动代码的第一部分,但它只打印用户输入的一个名称。
//These parts:
String[] favNames = new String[i];
int i = 1;
如果我在第一行和第二行之间交换位置。数组仅从用户处获取1个条目。
//Only gets one entry
int i = 1;
String[] favNames = new String[i];
3条答案
按热度按时间lyfkaqu11#
只要把i++移到while循环中,一切就好了!
46qrfjad2#
变量应该在使用前声明。这就是你的程序不起作用的原因。
改变
到
但是,请记住,在这种情况下,使用的数组只能输入1次(因为数组的大小是固定的)。如果要使用任意数量的输入,则必须使用
ArrayList
或类似类型。mbskvtky3#
在使用变量之前声明变量:
但是,大小为1的数组只能用于1个条目。如果您希望用户能够输入更多,您需要一个更大的数组。
我建议使用任意大的大小(比如100),然后检查条目是否适合数组;如果没有,游戏结束。
那么问题是
Arrays.toString
将打印null
对于空条目。我将制作一个自定义例程来打印以第一个空值结尾的数组:
相关问题:如何使用array.tostring()打印数组的所有非空元素
完整代码: