2013-04-12 52 views
1

說這是我的代碼:如何自動增加字符串/整數的效率?

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

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

有沒有我可以盈的name加上一個數字,如果不是12的方法嗎? 或者有沒有辦法創建一個ArrayList來做同樣的事情?

我需要從每個文件12線用namehighNumberlowNumber 我希望能夠操縱各自獨立喜歡的公式,也乾脆。

文件:

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

我限制到使用ScannerPrintWriter。 :(

+1

什麼是'月'? –

+1

我的道歉,意思是'name',編輯 –

+0

代碼中的月份在哪裏?你想實現什麼? –

回答

0

大概讀出線?

BufferedReader File = new BufferedReader(new FileReader(FileOpen)); 
    String str; 
    str = File.readLine(); 

當第一行讀取,然後再做的readLine()與(一個仿羔皮呢){}

+0

我實際上受限於使用FileReader1,我必須使用'Scanner'和'PrintWriter'。我會在我的帖子中提到,我很抱歉! –

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

然後東西線從文件到新的記錄對象讀取,它們添加到列表中,最後迭代列表,打印您的表

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); 
} 
+0

我會試試這個,我喜歡使用多種方法以及每個部分是如何看到的。它是否適用於所有12條線? –

+0

我似乎無法得到存儲的數據,並將它們追加到列表中 –

+0

添加了一些代碼來填充和打印列表 –

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++; 
} 

你期待這???提供更多細節..

+0

我會嘗試這個,從它的外觀來看,這有點合理。雖然不明白'while'。 –

+0

'while循環'用於讀取每行直到文件的最後一行。 – user2273376

+0

oooo,這很有趣。我會嘗試一下,看看我能用它做些什麼。 x) –