我试图让我的代码打印我在输出中输入的数字,但使用数组方法。
package pkg11;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x = 0;
System.out.println("How many number do you want to put?");
int b = in.nextInt();
for (int z = 1; z <= b; z++) {
System.out.println("Input your" + " " + z + " " + "number");
x = in.nextInt();
}
System.out.println();
int[] a = new int[x];;
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
问题是当它打印时它只打印最后一个值,例如,我把我想放 3 个数字,第一个是 1,第二个是 2,第三个是 3,它打印第三个而不放第一个 2。
仔细查看您的以下代码片段并尝试找出错误:
for (int z = 1; z <= b ; z++) {
System.out.println("Input your" +" " +z +" " +"number");
x = in.nextInt();
}
// here you create the array
int [] a = new int [x];
如果您没有发现它:在从控制台读取所有值后,您创建要保存每个整数的数组。您无法将用户输入存储在数组中,因为当时还不知道。
那么,你究竟做了什么?
你用相同的变量x
所有的时间x = in.nextInt();
,覆盖每个输入。
我能做些什么来解决问题?
Scanner in = new Scanner(System.in);
int x = 0;
System.out.println("How many number do you want to put?");
int b = in.nextInt();
int[] a = new int[b];
for (int z = 0; z < b; z++) {
System.out.println("Input your" + " " + (z + 1) + " " + "number");
a[z] = in.nextInt();
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
首先,int[] a = new int[b];
在读取值之前声明并将每个输入分配给数组a[z] = in.nextInt();
。另外,我稍微修改了你的循环索引,让事情变得更容易。
好的,我还能做什么?
除了用户输入非数字外,此代码更防弹!如果您正在寻找更多,您可以使用in.nextLine()
和Integer.valueOf()
来防止用户输入字符串而不是数字。
Scanner in = new Scanner(System.in);
int amountOfNumers;
System.out.println("How many number do you want to put? Amount: ");
amountOfNumers = in.nextInt();
while (amountOfNumers < 1) {
System.out.println("Please enter a number greater than one:");
amountOfNumers = in.nextInt();
}
int[] numbers = new int[amountOfNumers];
for (int i = 0; i < amountOfNumers; i++) {
System.out.println("Input your " + (i + 1) + " number: ");
numbers[i] = in.nextInt();
}
System.out.println("Your numbers are:");
Arrays.stream(numbers).forEach(System.out::println);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句