Java 查找对象数组的最大值/写入文件

Java 查找对象数组的最大值/写入文件,java,class,Java,Class,我试图从对象数组中找到最大分数。它的代码是int maxValue=-1以下的所有内容;代码行。我还试图将这些信息写入外部文件: import java.io.FileWriter; public class App { public static void main(String[] args) { Bands[] bands = new Bands[5]; bands[0] = new Bands("Joe", "Rick", "Nick", "Dalton",

我试图从对象数组中找到最大分数。它的代码是int maxValue=-1以下的所有内容;代码行。我还试图将这些信息写入外部文件:

import java.io.FileWriter;


public class App {


public static void main(String[] args) {

    Bands[] bands = new Bands[5];

    bands[0] = new Bands("Joe", "Rick", "Nick", "Dalton", "Doylestown, PA", "RockOn", 4000.50 , "Rock");
    bands[1] = new Bands("Luke", "Bill", "Ian", "Matt", "State College, PA", "Blink182", 3500.50 , "Alternative");
    bands[2] = new Bands("Corey", "Noah", "Jon", "Kaleb", "Philadelphia, PA", "Rise Against", 10000.50 , "Rock");
    bands[3] = new Bands("Jake", "Joey", "Mike", "Mac", "New York, NY", "Thousand Foot Krutch", 2000.50 , "Rock");
    bands[4] = new Bands("Bob", "Jeff", "Dom", "Mark", "King of Prussia, PA", "Skillet", 5500.50 , "Rock");

    bands[0].compete();
    bands[1].compete();
    bands[2].compete();
    bands[3].compete();
    bands[4].compete();

    for (int i = 0; i < 5; i++) {
        String bandInfo = bands[i].getInfo();
        System.out.println(bandInfo);
    }

    System.out.println("");


    //DOESNT WORK BEYOND THIS POINT



    int maxValue = -1;

    for (int i = 0; i < bands.length; i++) {
        if (bands[i].compete() > maxValue) {
            maxValue = bands[i].compete();
        }
    }

    try {
        FileWriter fw = new FileWriter("src/winners.txt", true);
        fw.write(bandInfo + "\n");
        fw.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

你想找最高的分数?在下面的代码中

 for (int i = 0; i < bands.length; i++) {
    if (bands[i].compete() > maxValue) {
        maxValue = bands[i].compete();
    }
}

至于您关于写入文件的问题,这应该可以:

try {
    FileWriter fw = new FileWriter("src/winners.txt", true);
       for(int i = 0; i <= 4; i++){
          fw.write(band[i].getInfo + "\n");
       }
    fw.close();
} catch (Exception e) {
    e.printStackTrace();
}
试试看{
FileWriter fw=新的FileWriter(“src/winners.txt”,true);

对于(int i=0;i至于您关于仅打印具有最高分数信息的波段的问题:

创建一个全局变量(在本例中,我将其称为winningBand作为整数) 然后编辑循环:

for (int i = 0; i < bands.length; i++) {
   if (bands[i].getScore() > maxValue) {
      maxValue = bands[i].getScore();
      winningBand = i;
   }
}

你的问题是什么?它现在似乎正在工作。你知道我将如何将与乐队相关的信息写入文件。例如,最高分数与乐队相关,我希望将乐队信息写入外部文件。我似乎能够写入分数,但我不确定信息。查看我的其他帖子。这样做es可以将所有带写入文件,谢谢!你知道我如何每次只将分数最高的带写入文件吗?只需创建一个Integer类型的新变量。在找到最高值的循环中,将此新变量设置为I(分数最高的当前带)。然后编辑上面的代码,删除for循环,只写入band[您创建的变量].GetInfo有什么方法可以显示给我,因为我在可视化它时遇到困难吗?是的,请看下面。现在我明白你在说什么了。我一定是做错了什么,因为它说它在file write语句中找不到变量winningBand。你需要将它设为全局变量。不要在方法中声明它。在声明歌手姓名的地方声明它。我在Bands类中声明了它,我在Bands类中声明了我的其他变量,它仍然表示找不到它。我知道我做了一些非常错误的事情,但我无法找出它。我更改了顶部原始问题中的代码,但它似乎仍然不正确?我的错。变量needs将在另一个班级,而不是乐队班级成为全球的一员。不用担心!它现在起作用了,非常感谢你的帮助!
public Integer getScore(){
    return score;
}
try {
    FileWriter fw = new FileWriter("src/winners.txt", true);
       for(int i = 0; i <= 4; i++){
          fw.write(band[i].getInfo + "\n");
       }
    fw.close();
} catch (Exception e) {
    e.printStackTrace();
}
for (int i = 0; i < bands.length; i++) {
   if (bands[i].getScore() > maxValue) {
      maxValue = bands[i].getScore();
      winningBand = i;
   }
}
try {
   FileWriter fw = new FileWriter("src/winners.txt", true);
   fw.write(band[winningBand].getInfo);
   fw.close();
} catch (Exception e) {
   e.printStackTrace();
}