因此,我正在为即将到来的考试做一些随机练习,而且我不知道我是否已经进行了几个小时的复习,而且我的大脑并没有。 ; t功能,或此代码中的某些内容是错误的。
我试图制作一个非常简单的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并停止。我已经完成了很多像这样的程序,而且对于我的生活,我无法弄清楚我哪里出错了。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
你的循环测试是倒退的。此
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));
答案 1 :(得分:1)
i>totalNum
是问题所在。 for循环甚至不会执行一次。
for循环有三个部分:
您的条件为i>totalNum
,对于i = 0和totalNum = 1,该条件为false。循环甚至不会执行一次。
循环中已经提到i++
,您不需要再将它包含在循环体中。
意外输出是由默认的toString() - Array方法引起的。使用Arrays.toString()
获取可读输出。
答案 2 :(得分:0)
你的循环条件应该是
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));
}
}