在我的代码中,我有2个数组名称和得分,两者的长度都是2
import java.util.Scanner;
public class Test {
private static Scanner key = new Scanner (System.in);
public static void main (String [] args){
String [] name = new String [2];
int [] score = new int [2];
readInfo(name, score);
showInfo(name, score);
}
public static void readInfo (String [] name, int [] score){
for (int i = 0; i < name.length; i++){
System.out.print("Name no."+(i + 1)+": ");
name [i] = key.next();
for (int j = 0; j < score.length; j++){
System.out.print("Score no."+(j + 1)+": ");
score [j] = key.nextInt();
}
System.out.println("");
}
}
public static void showInfo (String [] name, int [] score){
System.out.println("Name\tScores\n");
for (int i = 0; i < name.length; i++){
System.out.print(name [i]);
for (int j = 0; j < score.length; j++ )
System.out.println("\t"+score [j]+"\t");
System.out.println("");
}
}
}
当我输入姓名和分数时,输出中只显示两个名字的第二个分数。
Name no.1: john
Score no.1: 17
Score no.2: 19
Name no.2: jack
Score no.1: 12
Score no.2: 18
Name Scores
john 12
18
jack 12
18
这是我的问题,我该如何解决?
答案 0 :(得分:1)
对于第二次迭代 - 与第二个名称相关 - 您将覆盖输入的第一组分数。您需要将得分数组设为维数为2x2的二维数组。
int[][] score = new int[2][2];
然后,在嵌套的for循环中,参考分数如下:
for(int i = 0; i < names.length; i++) {
...
for(int j = 0; j < score[0].length; j++) {
score[i][j] // score referenced like this
}
...
}
这样,每个名称都有两个长度为2的独立数组。
答案 1 :(得分:0)
你有四个总分,一个只有两个的数组。当您运行readInfo时,第二个名称的分数将覆盖从第一个名称存储在其中的score数组中的数据。您需要在数组中为所有分数留出足够的空格,或者选择不同的方式来存储此数据。
答案 2 :(得分:0)
你可以这样解决:
public class Test{
private static Scanner key = new Scanner (System.in);
public static void main (String [] args){
String [] name = new String [2];
int [] score = new int [name.length*2];
readInfo(name, score);
showInfo(name, score);
}
public static void readInfo (String [] name, int [] score){
for (int i = 0; i < name.length; i++){
System.out.print("Name no."+(i + 1)+": ");
name [i] = key.next();
for (int j = i*2; j < name.length+i*2; j++){
System.out.print("Score no."+(j + 1)+": ");
score [j] = key.nextInt();
}
System.out.println("");
}
}
public static void showInfo (String [] name, int [] score){
System.out.println("Name\tScores\n");
for (int i = 0; i < name.length; i++){
System.out.print(name [i]);
for (int j = i*2; j < name.length +i*2; j++ )
System.out.println("\t"+score [j]+"\t");
System.out.println("");
}
}
}
这里发生的事情是你有一个长度为2的名字数组,你想要每个2分。这意味着你的得分数组需要有一个名字长度* 2:
int [] score = new int [name.length*2];
然后,在输入得分时,得分指数0和1需要为人1,指数2和3需要为人2,因此:
for (int j = i*2; j < name.length+i*2; j++){
System.out.print("Score no."+(j + 1)+": ");
score [j] = key.nextInt();
}
然后,读取
需要做同样的事情