所以我正在为即将到来的考试做一些随机的练习,我不知道这是因为我已经复习了几个小时,我的大脑没有工作,或者这段代码中有什么地方出了问题。
我正在尝试编写一个非常简单的java程序,它要求用户输入他们希望输入的数字的数量(totalNum),创建一个这么长的数组,然后要求用户输入每个单独的值。在要求用户提供数组中的每个值之后,它将打印数组。
下面是我的代码:
import java.util.Scanner;
public class Practice1 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("How many numbers would you like to store?");
int totalNum = s.nextInt();
int[] numbers= new int[totalNum];
for (int i = 0; i>totalNum; i++) {
System.out.println("Number" + i + " :");
numbers[i] = s.nextInt();
i++;
}
numbers.toString();
System.out.println(numbers);
}
}当我运行它时,它要求用户输入我想要存储的号码,然后打印[I@33909752并停止。我已经做了几十个这样的程序,我的生活中我找不出哪里错了。
如有任何帮助,将不胜感激,谢谢!
发布于 2016-03-30 12:21:45
您的循环测试是反向的。这
for (int i = 0; i>totalNum; i++) {应该是
for (int i = 0; i < totalNum; i++) {按照原样,测试的结果是false,并且没有进入循环。而且,不要在循环体中增加i (这就是i++在for中做的事情)。最后,
System.out.println(numbers);不会正确打印数组,因为数组不会覆盖Object.toString()。您可以像这样使用Arrays.toString
System.out.println(Arrays.toString(numbers));发布于 2016-03-30 12:21:32
i>totalNum是问题所在。for循环甚至不会执行一次。
for循环有三个部分:
之后要执行的操作
您的条件是i>totalNum,对于i=0和totalNum=1为false。循环不会执行一次。
i++已经在循环中提到了,您不需要再将其包含在循环体中。
意外输出是由数组的默认toString()-method引起的。使用Arrays.toString()获得可读的输出。
发布于 2016-03-30 14:42:41
你的循环条件应该是
for (int i = 0; i<totalNum; i++) {在循环中不要增加变量i
使用下面的代码来获得您想要的结果。
public class Practice1 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("How many numbers would you like to store?");
int totalNum = s.nextInt();
int[] numbers= new int[totalNum];
for (int i = 0; i<totalNum; i++) {
System.out.println("Number" + i + " :");
numbers[i] = s.nextInt();
i++; //remove this
}
numbers.toString();
System.out.println(Arrays.toString(numbers));
}
}https://stackoverflow.com/questions/36299625
复制相似问题