[英]Java: Read integers from an existing text file and output to another file
酒吧圖
編寫一個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: *******************
請記住,我只是在Java入門的第5章:循環和文件簡介中。 答案必須非常簡單 。 我們尚未在本文中介紹以下內容,因此請不要使用它們:int [],bufferedWriter,fstream,.length,out.print ..... etc等
因此,我必須使用最簡單的代碼,例如:
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);
}
}
好了,您有兩個名為inputFile的變量:
Scanner inputFile = new Scanner(System.in);
File inputFile = new File("sales.txt");
嘗試將第一個重命名為inputScanner。 outputFile的處理相同。
看來您的代碼將能夠成功地將所需的輸出生成到storeReport.txt
如果 store1
, store2
等包含了sales.txt
中的數字,但它們沒有。 您尚未告訴Java從文件中讀取數字並將其讀入變量; 它們不會自動填充文件中的數據。 您得到的編譯錯誤可能與使用尚未初始化的變量有關(即,它們尚未包含任何數據)。 重讀本書中涉及文件輸入的部分,以了解如何將文件中的數據加載到變量中。 :-)
我會考慮這樣的方法
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()
。
提示:
在同一個作用域中不能有兩個具有相同名稱的局部變量。 特別要看一下您對inputFile
的聲明。
您需要檢查Scanner
和File
類的用途。 閱讀javadocs,並查看它們聲明的方法和構造函數。
語句bar1 = store1/100;
在當前版本的代碼中(一旦您修復了其他錯誤)將給您一個編譯錯誤,指出store1
尚未初始化。 使用局部變量之前,必須對其進行初始化。
創建Scanner
對象實際上不會讀取任何內容。 您必須在對象上調用方法以使其執行某些操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.