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

时间:2017-01-30 22:33:35

标签: 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", "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();
    }
}

然后这是我的Bands类代码:

import java.util.Random;

public class Bands {

private String singerName;
private String guitarName;
private String bassistName;
private String drummerName;
private String Hometown;
private String bandName;
private double income;
private String genre;
private int score;
private int winningBand;

public Bands(String singerName, String guitarName, String bassistName, String drummerName, String Hometown, String bandName, double income, String genre)
{
    this.singerName = singerName;
    this.guitarName = guitarName;
    this.bassistName = bassistName;
    this.drummerName = drummerName;
    this.bandName = bandName;
    this.Hometown = Hometown;
    this.income = income;
    this.genre = genre;
    this.score = -1;
    this.winningBand = -1;
}

public void compete()
{     
    Random rand = new Random();
    this.score = rand.nextInt(20);
}

public int getScore() 
{
    return this.score;
}

public String getInfo()
{
    String bandInfo = "Band: " + this.bandName + ", Singer: " + this.singerName + ", Guitarist: " + this.guitarName + ", Bassist: " + this.bassistName + 
                      ", Drummer: " + this.drummerName + ", Hometown: " + this.Hometown + ", Income: " + this.income + ", Genre: " + 
                      this.genre + ", Final Score: " + this.score;

    return bandInfo;
}
}

3 个答案:

答案 0 :(得分:0)

你想找到最高分?那么在下面的代码中

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

当你说.compete()时,这什么都不做。它在Bands类中分配一个随机分数。相反,如果你想比较分数,它应该是这样的。

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

注意:您需要在band类中编写一个getScore()方法,该方法返回如下所示的分数:

public Integer getScore(){
    return score;
}

答案 1 :(得分:0)

关于写入文件的问题,这应该有效:

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();
}

答案 2 :(得分:0)

至于您关于仅打印乐谱得分最高的问题:

创建一个全局变量(在这种情况下,我将winsBand称为整数) 然后编辑你的循环:

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

然后当您写入文件时,只写下winsBand:

try {
   FileWriter fw = new FileWriter("src/winners.txt", true);
   fw.write(band[winningBand].getInfo);
   fw.close();
} catch (Exception e) {
   e.printStackTrace();
}