1
public class Main {
public static void main(String[] args) {
    java.util.ArrayList<StudentDataArray> info = new java.util.ArrayList<StudentDataArray>();
    int amountOfPeople = KeyboardInput.promptForInt("Enter how many people you plan to enter into the list.");
    for(int a=0;a<amountOfPeople;a++) {
        try {
        double[] grade = new double[5];
        grade[0]=KeyboardInput.promptForDouble("Enter the First grade");
        grade[1]=KeyboardInput.promptForDouble("Enter the Second grade");
        grade[2]=KeyboardInput.promptForDouble("Enter the Third grade");
        grade[3]=KeyboardInput.promptForDouble("Enter the Fourth grade");
        grade[4]=KeyboardInput.promptForDouble("Enter the Fifth grade");
            info.add(new StudentDataArray(KeyboardInput.promptForString("Enter the First Name"),KeyboardInput.promptForString("Enter the Last Name"),grade,KeyboardInput.promptForChar("Enter the Final Grade")));
        }catch(IllegalArgumentException e){
            System.out.println("Hello World :)");
        }
    }
    for(int b=0;b<amountOfPeople;b++) {
        System.out.printf("%-10s %-10s %-3f %-3s",info.get(b).getFN(),info.get(b).getLN(),info.get(b).getTS(),info.get(b).getFG());
    }
}
}

public class StudentDataArray {
private String firstName;
private String lastName;
private double[] testScore;
private char finalGrade;
public StudentDataArray(String FN, String LN, double[] TS, char FG) {
    firstName = FN;
    lastName = LN;
    testScore = TS;
    finalGrade = FG;
}
public void setFN(String FN) {firstName = FN;};
public void setLN(String LN) {lastName = LN;}
public void setTS(double[] TS) {testScore = TS;}
public void setFG(char FG) {finalGrade = FG;}
public String getFN() {return firstName;};
public String getLN() {return lastName;}
public String getTS() {
    for(int a=0;a<testScore.length;a++) {
        return testScore[a]+"   ";
    }
    return null;
}
public char getFG() {return finalGrade;}
}

大家好,这是我的代码供大家查看。我想要做的是将多个双打返回到代码中的一个位置。它会是什么样子...

伊桑迈克尔 10 20 30 40 50 A

这都显示在一个语句中 [10 20 30 40 50]

由于我使用的是 double[] 我不知道该怎么做。

多谢你们!

4

6 回答 6

1

您可以使用 for 语句将所有信息连接到一个变量中,然后打印出来。

于 2013-04-19T03:29:27.713 回答
1

以下是你如何在一行中做到这一点:

String s = Arrays.toString(testScores).replaceAll("[\\[\\],]", "");

您可以在需要字符串的任何地方使用此表达式(即等号右边的所有内容)。

这样做的关键是使用 [ Arrays.toString()][1],它产生一个类似 的字符串"[10, 20, 30, 40, 50]",然后调用String.replaceAll()以去除所有标点符号。

于 2013-04-19T03:47:12.287 回答
0

很多答案,但没有一个使用 a StringBuilder,建议使用它而不是循环中的连接。它不会在每次迭代中创建新的 String 对象,因此在资源上要容易得多。像这样:

public String getTS() {
    StringBuilder sb = new StringBuilder();
    for(int a=0;a<testScore.length;a++) {
        sb.append(testScore[a]+" ");
    }
    return sb.toString();
}
于 2013-04-19T03:55:32.287 回答
0

看来你需要这样的东西:

public String getTS() {
    returnString := "";
    for(int a=0;a<testScore.length;a++) {
        returnString += testScore[a]+"   ";
    }
    return returnString;
}
于 2013-04-19T03:32:50.807 回答
0
public String getTS() {
yourString:= "";
for(int a=0;a<testScore.length;a++) {
        yourString+= testScore[a]+"   ";
    }
  return ts;
 }
于 2013-04-19T03:33:11.200 回答
0

我认为最简单的事情是转换GetTS()成这样的东西:

public String getTS() {
    String ts = "";
    for(int a=0;a<testScore.length;a++) {
        ts += testScore[a]+"   ";
    }
    return ts;
}

请注意,您在 Main.java 中的格式字符串应更改为"%-10s %-10s %-3s %-3s".

于 2013-04-19T03:34:02.507 回答