Java新手在這裏,我有一個問題,我一直在牆上撞了我的頭幾個小時了。如何從包含多個數據類型的文本文件輸入
基本上,我需要讀取包含String,Integer和Double數據類型的文本文件。 (請參閱下面的文件)
該文本格式爲兩行。第一行只是產品名稱,第二行是一個代表工廠編號的整數,然後是4位小數,代表四個工廠之一的銷售額,單位爲百萬美元。
CrossTrainMax
1 15.1 12.8 3.14 2.3
AirGlider
3 12.2 4.6 6.5 8.3
AquaWalker
2 3.82 1.75 7.6 6.38
SuperHike
1 9 11.2 7.5 8.4
第一個值是產品的名稱。單個數字的整數是產生它的工廠編號。十進制數字表示該產品的銷售額以百萬美元計,由空白分隔。
我的計劃是將產品名稱讀作字符串,然後使用整數值作爲SWITCH語句。 (每個工廠的利潤百分比都不一樣,所以我認爲最好的方法是用這種方法來計算開關聲明中的總利潤。)
當我得到每件產品的總銷售額後,我會那麼必須向用戶顯示哪個產品銷售額最高。
所以我的問題是:
一)我怎麼能在多種數據類型讀如果我嘗試使用NextLine線做線? 我知道如何閱讀所有整數,所有雙打或所有字符串,但如果它們完全不同,最好的方法是什麼?
到目前爲止,我的嘗試導致了不匹配的例外。
b)我最好閱讀字符串中的所有值,並使用正則表達式將它們解析爲變量?
c)如果我要根據最高利潤對銷售進行排序,我是否需要將每個產品的總銷售額存儲在單獨的變量中?如果我正在使用循環讀取文件的輸入,可以這樣做嗎? (我們還沒有覆蓋陣列)
這是我一直在玩的代碼的開始。我仍然堅持閱讀單獨的數據類型的問題。任何反饋/批評表示讚賞。
import java.util.Scanner; // Needed for scanner class
import java.io.*; // Needed for the File and IOException
public class SalesProcessor
{
public static void main(String[] args) throws IOException
{
int x;
double sales = 0;
double total = 0;
double profit = 0;
// Create scanner object for keyboard input.
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the filename: ");
String filename = keyboard.nextLine();
// Open the file
File file = new File(filename);
Scanner inputFile = new Scanner(file);
String line = inputFile.nextLine();
for (x = 1; x <= 5; x++)
{
while (line != "END")
{
int plant = inputFile.nextInt();
switch (plant)
{
case 1:
while (inputFile.hasNext())
{
sales = inputFile.nextDouble();
total = total + sales;
}
profit = sales * .06;
System.out.println(total);
System.out.println(profit);
System.out.println(profit);
break;
}
}
}
}
}
你的while循環似乎直到文件結束。它會在給定行的最後一個double(和/ n)後遇到字符串時拋出異常。 – dariopy 2010-11-05 21:59:41