2013-10-12 50 views
0

文本文件包含以逗號分隔的數字(例如458.58,1598.45 ...)。如何將文本文件中的字符串元素添加到ArrayList中?

我想從文本文件中添加一整行到ArrayList中。

這裏是我到目前爲止的代碼:

// to calculate final output 
ArrayList<String> weeklySales = new ArrayList<String>(7); 

// week 1 sales 
while(file.hasNext()) { 
    weeklySales.add(file.nextLine()); 
    System.out.println("I ran!"); 
} 

System.out.println(weeklySales); 

編輯:對不起,我的問題不明確。我的問題是運行此代碼後,它將全部文本文件的所有元素添加到我的數組中,但我只需要將1 LINE添加到其各自的ArrayList中。所以總的來說,我將擁有與文件中的文本行數一樣多的數組列表。

+1

你還沒有問了一個問題。請閱讀常見問題。 –

+0

Edolsa,如果你找到了解決方案,你可以將它標記爲'答案' – Pankaj

+0

它不會讓我,我必須等待2個小時它說。 – codefl0w

回答

0

我終於搞定了。我意識到使用StringTokenizer最簡單的方法來處理單個行並將單個數字與文本文件分開。這裏是完整的工作代碼,您需要的全部是文本文件,名爲'SalesData.txt',我的文件包含以下3行:

1245.67,1490.07,1679.87,2371.46,1783.92,1461.99,2059.77 2541.36,2965.88,1965.32,1845.23,7021.11,9652.74,1469.36 2513.45,1963.22,1568.35,1966.35,1893.25,1025.36,1128.36

這個程序的輸出如下:每個星期
- 每日平均
- 總銷售每週
- 所有星期的總銷售額
- 平均每週至TAL
-The周最高銷售
-The一週最低銷售

DecimalFormat formatter = new DecimalFormat("#0.00"); 

// create file object 
File salesData = new File("SalesData.txt"); 

// open file 
Scanner file = new Scanner(salesData); 

// declare 2 dimensional array 
double[][] weeklySales = new double[3][7]; 

// loop to initialize token 
int row = 0; 
while(file.hasNext()) { 
// initialize token 
String line = file.nextLine(); 
StringTokenizer tokens = new StringTokenizer(line, ","); 

// fill columns and rows 
int col = 0; 
while(tokens.hasMoreTokens()) { 
     // convert to double and assign to token 
    weeklySales[row][col] = Double.parseDouble(tokens.nextToken()); 
    // move up 1 column 
    col++; 
    } 
// move down 1 row 
row++; 
} 

// calculate weekly sales 
double week1Sales = 0, week2Sales = 0, week3Sales = 0; 
for(int i = 0; i < 3; i++) { 
    for(int j = 0; j < 5; j++) { 
     double daily = weeklySales[i][j]; 
     if(i == 0) 
      week1Sales += daily; 
     else if(i == 1) 
      week2Sales += daily; 
     else if(i == 2) 
      week3Sales += daily; 
    } 
} 
// week 1 sales 
System.out.println("Week 1 total sales: $" +formatter.format(week1Sales)); 
// week 2 sales 
System.out.println("Week 1 total sales: $" +formatter.format(week2Sales)); 
// week 3 sales 
System.out.println("Week 1 total sales: $" +formatter.format(week3Sales)); 

// average daily for week 1 
System.out.println("Daily average for week 1: $" +formatter.format(week1Sales/7)); 

// average daily for week 2 
System.out.println("Daily average for week 2: $" +formatter.format(week2Sales/7)); 

// average daily for week 3 
System.out.println("Daily average for week 3: $" +formatter.format(week3Sales/7)); 

// total for all weeks 
double weeklyTotal = week1Sales + week2Sales + week3Sales; 

System.out.println("Total sales of all the weeks: $" +formatter.format(weeklyTotal)); 

// average weekly sales 
System.out.println("Average weekly total: $" + formatter.format(weeklyTotal/3)); 

// week number with highest sales 
if(week1Sales > week2Sales) 
    if(week1Sales > week3Sales) 
     System.out.println("The week with the highest sales is week 1."); 
    else 
     System.out.println("The week with the highest sales is week 3."); 
else if(week2Sales > week3Sales) 
    if(week2Sales > week1Sales) 
     System.out.println("The week with the highest sales is week 2."); 
    else 
     System.out.println("The week with the highest sales is week 1."); 
else 
    System.out.println("The week with the highest sales is week 3."); 

// week number with the lowest 
if(!(week1Sales > week2Sales)) 
    if(!(week1Sales > week3Sales)) 
     System.out.println("The week with the lowest sales is week 1."); 
    else 
     System.out.println("The week with the lowest sales is week 3."); 
else if(!(week2Sales > week3Sales)) 
    if(!(week2Sales > week1Sales)) 
     System.out.println("The week with the lowest sales is week 2."); 
    else 
     System.out.println("The week with the lowest sales is week 1."); 
else 
    System.out.println("The week with the lowest sales is week 3."); 
0

這是代碼,你可以使用:

String line = "458.58, 1598.45"; 
String array[] = line.split(", "); 

從字符串翻一番改變可以通過這種方式:

Double.valueOf(array[i]); 

改變數組列表可以通過這個來完成

ArrayList<String> list = new ArrayList<>(); 
list.addAll(Arrays.asList(array)); 
+0

嘿感謝代碼,這似乎工作,但問題是你展示瞭如何將其添加到數組,但我想要添加到ArrayList的元素。 – codefl0w

+0

將數組更改爲添加的列表。 – libik

相關問題