2011-03-04 41 views
0

條形圖的Java:閱讀從現有的文本文件,並輸出整數到另一個文件

寫Java程序,從名爲sales.txt現有的文本文件中讀取今天的五家商店的銷售數字(整數)和輸出到一個名爲storeReport.txt的新文件

程序應該顯示一個條形圖,比較每個商店的銷售情況。通過顯示一行星號來在條形圖中創建每個條形圖。每個星號應代表100美元的銷售額。

下面是從sales.txt讀整數:

1000 
1200 
1800 
800 
1900 

輸出文件(storeReport.txt)應該是這樣:

Store 1: ********** 
Store 2: ************ 
Store 3: ****************** 
Store 4: ******** 
Store 5: ******************* 

記住,我只是在第5章:介紹到循環和文件,介紹到Java。答案必須是非常簡單。我們還沒有在我的文本中得到以下內容,所以請不要使用它們:int [],bufferedWriter,fstream,.length,out.print .....等等等等

因此,我必須使用最簡單的代碼,如:

Scanner inputFile = new Scanner (file) 
File inputFile = new File (sales.text) 
PrintWriter outputFile = new PrintWriter (storeReport.txt) 

我們可以使用for循環,while循環和嵌套循環。

以下是我迄今爲止編寫的代碼。我收到編譯錯誤。請幫忙!!謝謝!

import java.util.Scanner; 

import java.io.*; 

public class BarChart 
{ 
    public static void main(String[] args) throws IOException 

    { 

     int store1,store2,store3,store4,store5; 
     int bar1,bar2,bar3,bar4,bar5; 

     Scanner inputFile = new Scanner(System.in); 

     File inputFile = new File("sales.txt"); 


     File outputFile = new File("storeReport.txt"); 

     PrintWriter outputFile = new PrintWriter("storeReport.txt"); 


     outputFile.println("SALES BAR CHART\n");    

     bar1 = store1/100; 
     outputFile.println("store 1 : "); 
     for(int i = 1; i <= bar1; i++) 
      outputFile.println("*"); 

     bar2 = store2/100; 
     outputFile.println("\nStore 2 : "); 
     for(int i = 1; i <= bar2; i++) 
      outputFile.println("*"); 

     bar3 = store3/100; 
     outputFile.println("\nStore 3 : "); 
     for(int i = 1; i <= bar3; i++) 
      outputFile.println("*"); 

     bar4 = store4/100; 
     outputFile.println("\nStore 4 : "); 
     for(int i = 1; i <= bar4; i++) 
      outputFile.println("*"); 

     bar5 = store5/100; 
     outputFile.println("\nStore 5 : "); 
     for(int i = 1; i <= bar5; i++) 
      outputFile.println("*"); 

     inputFile.close(); 

     outputFile.close();  

     System.out.println("Data written to the storeReport.txt"); 
     System.exit(0); 

    } 
} 
+5

我建議編輯您的問題以包含編譯錯誤。 – maerics

回答

1

看來,你的代碼將能夠成功地產生所需的輸出到storeReport.txt - 如果store1store2等已經包含在從sales.txt的數字,他們不這樣做。你還沒有告訴Java從文件和變量中讀取數字;他們不會自動填充文件中的數據。您得到的編譯錯誤可能與使用尚未初始化的變量有關(即,它們尚未包含任何數據)。重新閱讀您的書中涵蓋文件輸入的部分,以瞭解如何將文件中的數據加載到變量中。 :-)

3

好吧,你有2個變量命名INPUTFILE:

Scanner inputFile = new Scanner(System.in);   
File inputFile = new File("sales.txt"); 

嘗試重命名的第一個inputScanner。 outputFile相同。

0

提示:

  1. 你不能在具有相同名稱相同的範圍內兩個局部變量。特別看看你的申報inputFile

  2. 您需要查看ScannerFile類的用途。閱讀javadocs,並查看它們聲明的方法和構造函數。

  3. 當前版本的代碼中的語句bar1 = store1/100;將會(一旦您修復了其他錯誤)給您一個編譯錯誤,說明store1尚未初始化。在使用它們之前,局部變量必須被初始化。

  4. 創建一個Scanner對象實際上沒有讀取任何內容。您必須調用對象上的方法才能使其執行某些操作。

1

我會考慮這樣的

static void printBar(int sales) { 
    int bar = sales/100; 
    for(int i = 0; i < bar; i++) outFile.print("*"); 
    outFile.println(""); // flush and finish line 
} 

的方法可以有效地使用此爲您的每個輸入。您將不得不將outFile變量設置爲靜態類變量,或將其作爲參數傳遞給printBar()

相關問題