【问题标题】:How can I make array of bowlers?我怎样才能制作一系列保龄球?
【发布时间】:2014-03-02 08:33:14
【问题描述】:

以下是我要解决的问题-

在一日国际赛中,所有投球手的保龄球数字都已提供。目标是创建一个 Bowler 数组并返回它。请注意,对象在数组中的出现顺序应与它们在输入中出现的顺序相同。 输入提供了一个字符串。该字符串具有以 Name-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;


    }

}

【问题讨论】:

  • 为什么你认为代码有错误?它做错了什么?
  • 我不确切知道,但我没有得到任何输出与此代码。要么我输入错误或其他东西。
  • 你怎么称呼它?你的main呢?
  • 这就是我的全部了。有什么问题吗?

标签: java arrays object constructor


【解决方案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());
    }

}

}

【讨论】:

  • 您的代码有效,但没有给出正确的输出。输出应该是投球手数组 {Zaheer-10-1-55-0, Harbhajan-8.4-0-44-2 ,Ishant- 10-0-71-1} 它返回的输出如下: Zaheer/n Harbhajan/n Ishant/n "/n is for names in different lines"
  • 你得到了一系列保龄球。您可以根据需要修改“视图”;)
  • 因为我是第一次做这个话题。我不知道怎么做。我可以提示我必须修改哪一行。
  • 非常感谢您的帮助。
【解决方案2】:

您正在 for 循环内重新初始化礼帽数组。尝试删除该行(循环中的第一行)。

【讨论】:

  • 尝试删除。没有改善
【解决方案3】:
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");

【讨论】:

  • 这可以编译吗?我没有看到obj的声明。
猜你喜欢
  • 2016-09-14
  • 1970-01-01
  • 2021-10-10
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多