簡體   English   中英

Java:從現有的文本文件中讀取整數並輸出到另一個文件

[英]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 如果 store1store2等包含了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()

提示:

  1. 在同一個作用域中不能有兩個具有相同名稱的局部變量。 特別要看一下您對inputFile的聲明。

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

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

  4. 創建Scanner對象實際上不會讀取任何內容。 您必須在對象上調用方法以使其執行某些操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM