我如何制作一系列投球手?

时间:2014-03-02 08:33:14

标签: java arrays object constructor

以下是我要解决的问题 -

在为期一天的国际比赛中,所有投球手都参加了保龄球比赛。目标是创建一个Bowler阵列并将其返回。请注意,对象在数组中的显示顺序应与输入中显示的顺序相同。 输入提供一个字符串。该字符串有每个投球手的空间划分细节,名称为Overs-Maiden-Runs-Wickets,如“Zaheer-10-1-55-0 Harbhajan-8.4-0-44-2 Ishant-10-0-71- 1“。定义一个获取并打印Bowler数组的函数。

代码中有一些错误,但我无法检测到它。

public class MakeArrayOfBowlers{

    String name;
    double over;
    int maiden;
    int runs;
    int wickets;


    public MakeArrayOfBowlers(String input){
        String[] str=input.split("-");
        this.name=str[0];
        this.over=Double.parseDouble(str[1]);
        this.maiden=Integer.parseInt(str[2]);
        this.runs=Integer.parseInt(str[3]);
        this.wickets=Integer.parseInt(str[4]);
    }

    public MakeArrayOfBowlers[] makeBowlers (String  input){  
        MakeArrayOfBowlers str= (MakeArrayOfBowlers) new MakeArrayOfBowlers("Zaheer-10-1-55-0 Harbhajan-8.4-0-44-2 Ishant-10-0-71-1");
        String[] str1 = input.split(" ");
        MakeArrayOfBowlers bowler[]= new MakeArrayOfBowlers[str1.length];
        for(int i = 0; i < str1.length; i++){           
            bowler = new MakeArrayOfBowlers[str1.length];
            MakeArrayOfBowlers obj = new MakeArrayOfBowlers(str1[i]);
            bowler[i] = obj;
        }
        return bowler;


    }

}

3 个答案:

答案 0 :(得分:1)

你正在重新初始化for循环中的投球手阵列。尝试删除该行(循环中的第一行)。

答案 1 :(得分:1)

你应该创建一个自己的类保龄球(构造函数应该更好但是你的例子;)):

public class Bowler {
private String name;
private double over;
private int maiden;
private int runs;
private  int wickets;   

public Bowler(String input){
    String[] str=input.split("-");
    this.name=str[0];
    this.over=Double.parseDouble(str[1]);
    this.maiden=Integer.parseInt(str[2]);
    this.runs=Integer.parseInt(str[3]);
    this.wickets=Integer.parseInt(str[4]);
}

public String getName() {
    return name;
}


public double getOver() {
    return over;
}


public int getMaiden() {
    return maiden;
}


public int getRuns() {
    return runs;
}


public int getWickets() {
    return wickets;
}
}

比拆分你的字符串并为每个投球手添加它:

public class MakeArrayOfBowlers {

public static Bowler[] makeBowlers(String input) {
    String[] splitArray = input.split(" ");

    Bowler[] bowler = new Bowler[splitArray.length];
    for (int i = 0; i < splitArray.length; i++) {
        bowler[i] = new Bowler(splitArray[i]);
    }
    return bowler;

}

public static void main(String[] args) {
    Bowler[] bowlers = makeBowlers("Zaheer-10-1-55-0 Harbhajan-8.4-0-44-2 Ishant-10-0-71-1");
    for (Bowler bowler : bowlers) {
        System.out.println(bowler.getName()+"-"+bowler.getOver()+"-"+bowler.getMaiden()+"-"+bowler.getRuns()+"-"+bowler.getWickets());
    }

}

}

答案 2 :(得分:0)

public MakeArrayOfBowlers[] makeBowlers (String  input){  
    String[] str1 = input.split(" ");
    MakeArrayOfBowlers bowlers[]= new MakeArrayOfBowlers[str1.length];
    for(int i = 0; i < str1.length; i++){ 
      MakeArrayOfBowler bowler = new MakeArrayOfBowlers(str1[i]);
      bowlers[i] = obj;
    }
    return bowlers;
  }

从您的主函数调用

MakeArrayOfBowlers o = new MakeArrayOfBowlers();
MakeArrayOfBowlers[] b = o.makeBowlers("Zaheer-10-1-55-0 Harbhajan-8.4-0-44-2 Ishant-10-0-71-1");
相关问题