1

これが私のコードだとしましょう:

String name = in1.next();
int highNumber = in1.nextInt();
int lowNumber = in1.nextInt();

System.out.println(name +" " + highNumber +" " + lowNumber);

12 でない場合、前に数字を追加する方法はありnameますか? ArrayListまたは、同じことを行うために を作成する方法はありますか?

nameファイルからそれぞれ, highNumber,を含む 12 行を取得する必要があり、それぞれをlowNumber 方程式に対して個別に操作したり、まとめて操作したりしたいと考えています。

ファイル:

Edward 33 22
Billy  22 14
Fred   44 43
Jim    12  1
Andy   3   2
...

期待される出力:

Name             High             Low             Average            Range
--------------------------------------------------------------------------
Billy             22                14             18                  8
...

Total Averages
Total Highs
Total Lows

このようなことをする代わりに:

String name2 = in1.next();
int highNumber2 = in1.nextInt();
int lowNumber2 = in1.nextInt();
String name3 = in1.next();
int highNumber3 = in1.nextInt();
int lowNumber3 = in1.nextInt();
String name4 = in1.next();
int highNumber4 = in1.nextInt();
int lowNumber4 = in1.nextInt();
...
String name12 = in1.next();
int highNumber12 = in1.nextInt();
int lowNumber12 = in1.nextInt();

Scannerと の使用に制限されていPrintWriterます。:(

4

3 に答える 3

2

このようなオブジェクトにすべての行のデータを保存できます

public class Record {
    private String name;
    private Integer high;
    private Integer low;

    public Record(String name, Integer high, Integer, low) {
        this.name = name;
        this.high = high;
        this.low = low;
    }

    public Record(String line) {
        String[] parts = line.split(" ");
        name = parts[0].trim();
        high = new Integer(parts[1].trim());
        low = new Integer(parts[2].trim());
    }

    public String getName() {
        return name;
    }

    public Integer getHigh() {
        return high;
    }

    public Integer getLow() {
        return low;
    }

    public Integer getAvg() {
        return (high + low) / 2;
    }

    public Integer getRange() {
        return (high - low);
    }

    public String toString() {
        return name + '\t' + high + '\t' + low  +'\t' + getAvg() + '\t' + getRange();
    }
}

次に、ファイルから読み取った行を新しい Record オブジェクトに詰め込み、それらをリストに追加し、最後にリストを繰り返し処理してテーブルを印刷します

List<Record> records = new ArrayList<Record>();
String name;
Integer high;
Integer low;

for(int i = 0; i < 12; i++) {
    name = in1.next();
    high = in1.nextInt();
    low = in1.nextInt();

    records.add(new Record(name, high, low));
}

for(Record record : records) {
    System.out.println(record);
}
于 2013-04-12T08:34:01.773 に答える
1
Scanner in=new Scanner(new File(""));
System.out.println("Id\tName\tHigh\tLow\tAvg\tRange");
int id=1;
while(input.hasNext())
{
String name=input.next();
int high=input.nextInt();
int low=input.nextInt();
System.out.println(id+"\t"+name+"\t"+high+"\t"+low+"\t"+((high+low)/2)+"\t"+(high-low));
id++;
}

これを期待していますか???詳しく教えて..

于 2013-04-12T09:01:11.590 に答える