亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java:使用文本文件創建數據集

Java:使用文本文件創建數據集

忽然笑 2022-06-30 17:45:38
我正在嘗試制作一個程序來獲取不同類型的美國硬幣的總數,并將它們的值加起來。硬幣信息來自一個txt文件。第一行是一個整數,表示數據集的數量。每個數據集都是一行,13 個整數由一個空格分隔。每個整數代表硬幣或鈔票的數量。首先是便士,然后是鎳幣,一直到百元鈔票。我迷失在我想將數據讀入程序然后做數學和總計的地方。我想我需要為每個數據集使用 arraylists,但到目前為止,我能弄清楚的是如何將整個 txt 文件(在第一個 int 之后)加載到單個數組列表中,而不是一組等于數據集的數量(每個文件 5 個)。我是 java 和一般編程的新手,所以任何幫助表示贊賞。我想一旦我可以加載這些值,我就可以很容易地開始添加它們,但我現在很迷茫。這是txt文件顯示的內容:54 0 2 3 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 01 2 3 4 5 6 7 8 9 10 11 12 134 0 2 3 10 10 2 1 2 1 10 1 10010 10 10 10 5 5 5 5 2 2 2 2 1到目前為止,這是我的代碼:import java.io.File;import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class CountDollarsCF {    public static void main(String[] args) throws FileNotFoundException {        System.out.println("Enter file path.");        Scanner reader = new Scanner(System.in);        String input = reader.nextLine();        File file = new File("src/" + input);        Scanner data = new Scanner(file);        int sets = 0;        sets = data.nextInt();        ArrayList<Integer> datasets;        datasets = new ArrayList<>();           while(data.hasNextInt()){            datasets.add(data.nextInt());        }        data.close();        }    }我應該補充一點,我可以使用的工具有限。我只關注 Lewis 和 Loftus 撰寫的 Java Software Solutions 的第 5 章。所以我們還沒有學習地圖、轉換、哈希圖或集合。我們只需要數組列表,并創建一些類。我將截斷到最接近的整數,目標是輸出如下內容:第 1 行:0 美元第 2 行:0 美元第 3 行:2297 美元第 4 行:10289 美元第 5 行:296 美元
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

一個不錯的策略的提示。如果每行的總和必須以美元為單位,這是有效的。只要知道double你可能會失去一些精確度。


編輯以符合 OP 先決條件(僅ArrayList)。


try (final Scanner data = new Scanner(file)) {

    final int lines = data.nextInt();

    final Collection<Double> totalPerLine = new ArrayList<>(lines);


    for (int i = 0; i < lines; i++) {

        double sum = 0;


        for (int j = 0; j < 13; j++) {

            final int value = data.nextInt();

            sum += getDollars(j, value);

        }


        totalPerLine.add(sum);

        System.out.println("Line " + i + ": $" + sum);

    }

}

private static double getDollars(

        final int type,

        final int value) {

    switch (type) {

        case 0: // Penny

            return value / 100D;

        case 1: // Nickle

            return value / 20D;

        case 2: // Dime

            return value / 10D;

        case 3: // Quarter

            return value / 4D;

        case 4: // Half

            return value / 2D;

        case 5: // Dollar coin

        case 6: // Dollar bill

            return value;

        case 7: // Two dollars bill

            return value * 2D;

        case 8: // Five dollars bill

            return value * 5D;

        case 9: // Ten dollars bill

            return value * 10D;

        case 10: // Twenty dollars bill

            return value * 20D;

        case 11: // Fifty dollars bill

            return value * 50D;

        case 12: // A hundred dollars bill

            return value * 100D;

        default:

            return 0;

    }

}


查看完整回答
反對 回復 2022-06-30
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號