我目前正在学习如何使用数组,但我的其中一个数组存储输入时遇到了麻烦。
我试图创建两个嵌套的 for循环,它们在每个输入之后来回循环,但是其中一个循环正在扫描但不存储输入,我需要将其存储到第二个数组中。
>我对嵌套for循环的逻辑的理解不是最好的,因此我认为这与此有关。
任何帮助将不胜感激。
我的源代码:
import java.util.Scanner;
import java.util.Arrays;
public class PlayerRoster {
public static void inputStats(Scanner scan) {
int [] number = new int [5];
int [] rating = new int [5];
int jerseyNumber = 1;
for(int i = 0; i < number.length; i++){
System.out.printf("Enter player %d's jersey number\n", jerseyNumber);
number[i] = scan.nextInt();
for(int j = 0; j < 1; j++){
System.out.printf("Enter players %d's rating\n", jerseyNumber);
rating[j] = scan.nextInt();
jerseyNumber++;
}
}
System.out.println(Arrays.toString(number));
System.out.println(Arrays.toString(rating));
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
inputStats(scan);
return;
}
}
答案 0 :(得分:0)
由于数组的长度相同,因此不需要第二个循环。
1两个数组的循环就足够了。 像这样:
import java.util.Scanner;
import java.util.Arrays;
public class PlayerRoster {
public static void inputStats(Scanner scan) {
int [] number = new int [5];
int [] rating = new int [5];
for(int i = 0; i < number.length; i++){
System.out.printf("Enter player %d's jersey number\n", i+1);
number[i] = scan.nextInt();
System.out.printf("Enter players %d's rating\n", i+1);
rating[i] = scan.nextInt();
}
System.out.println(Arrays.toString(number));
System.out.println(Arrays.toString(rating));
}
您也不需要jerseyNumber变量,因为它什么也没做。
答案 1 :(得分:0)
我想您期望这样的输出
[1,3,5,2,6] // number
[3,4,3,5,4] // rating
只需将您的inputStats
替换为此
public static void inputStats(Scanner scan) {
int [] number = new int [5];
int [] rating = new int [5];
for(int i = 0; i < number.length; i++){
System.out.printf("Enter player %d's jersey number\n", i+1);
number[i] = scan.nextInt();
rating[i] = scan.nextInt(); // changed Line.
}
System.out.println(Arrays.toString(number));
System.out.println(Arrays.toString(rating));
}
更改:
1。替换了
System.out.printf("Enter player %d's jersey number\n", jerseyNumber);
与
System.out.printf("Enter player %d's jersey number\n", i+1);
原因:这不是必需的,但是为什么要使用额外的变量。
2。替换此代码
for(int j = 0; j < 1; j++){
System.out.printf("Enter players %d's rating\n", jerseyNumber);
rating[j] = scan.nextInt();
jerseyNumber++;
}
与
rating[i] = scan.nextInt();
原因: for循环只是在每次执行时替换等级的索引0
答案 2 :(得分:0)
好吧,除了您不需要为每个玩家读取一个等级之外,不需要内循环(第二个for
语句),我认为您在循环方面没有任何问题。
所以你可以直接写
System.out.printf("Enter players %d's rating\n", jerseyNumber);
rating[i] = scan.nextInt();
不将其置于for循环中。
认识到我是如何使用i
而不是j
作为索引变量的,因为i
保持玩家人数j
只是一次循环输入等级的变量。由于第二个循环位于第一个循环的内部,因此每次执行外部循环(由j
计数)时,都会发生一次(由i
计数)。
现在,因为您已使用j
作为评分数组的索引,所以每个玩家的评分输入都将覆盖第一个玩家的评分,即评分数组中的第一个元素,但不会将其存储在由{{1 }}。
因此,您的完整代码为:
i