无法将输入存储在数组中

时间:2018-11-12 09:46:28

标签: java arrays

我目前正在学习如何使用数组,但我的其中一个数组存储输入时遇到了麻烦。

我试图创建两个嵌套的 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;
  }
}

3 个答案:

答案 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