[英]Having trouble storing input in array
我目前正在學習如何使用數組 ,但我的其中一個數組存儲輸入時遇到了一些麻煩。
我試圖創建兩個嵌套的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;
}
}
由於數組的長度相同,因此不需要第二個循環。
兩個陣列的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 var,因為它什么也不做。
我猜你期望這樣的輸出
[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環for
聲明)是不必要的,因為你正在閱讀的唯一一個每個球員的評價。
所以你可以直接寫
System.out.printf("Enter players %d's rating\n", jerseyNumber);
rating[i] = scan.nextInt();
而不將其置於for循環中。
認識到我是如何使用i
而不是j
作為索引變量的,因為i
保持玩家的數量j
只是一次循環輸入等級的變量。 由於第二個循環位於第一個循環內部,因此每次執行外部循環(由i
計數)時,都會發生一次(由j
計數)。
現在,因為您已將j
用作評分數組的索引,所以每個玩家的評分輸入都將覆蓋第一個玩家的評分,即,評分數組中的第一個元素,但不將其存儲在i
計數的下一個索引中。
因此,您的完整代碼將是:
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();
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.