2010-11-05 73 views
1

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



    } 
    } 

    } 
} 
+0

你的while循環似乎直到文件結束。它會在給定行的最後一個double(和/ n)後遇到字符串時拋出異常。 – dariopy 2010-11-05 21:59:41

回答

0

一般來說,您需要爲每個朋友使用java tokenizer。

相關問題