第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

讀取雙精度值返回零而不是實際值

讀取雙精度值返回零而不是實際值

偶然的你 2024-01-28 17:08:43
我正在嘗試讀取包含帳號和余額的文本文件。我以字符串形式讀取帳號,以雙精度形式讀取余額,但我得到的余額全為零,而不是實際值。該文件如下所示:0015      112.340020     4000.000034     9345.890069      723.500085     1500.000091     8237.310128       29.750129     -483.140135     2908.830189    10045.900251     5700.10第二列是余額。我的代碼,帶有額外的類來存儲帶有余額的帳戶,如下所示package Bank;import java.util.Scanner;import java.io.PrintStream;import ui.UIAuxiliaryMethods;class Bank {    PrintStream out;     Bank() {             out = new PrintStream(System.out);             }     void readFileIn() {         Scanner fileScanner = UIAuxiliaryMethods.askUserForInput().getScanner();         while(fileScanner.hasNext()) {             String Account = fileScanner.nextLine();             readLine(Account);         }     }     void readLine(String Account) {         String[] part1 = Account.split(" ");         String account = part1[0];         String balance1 = part1[1];         Scanner Balance = new Scanner(balance1);         double balance = 0;         double count1 = 0;         while(Balance.hasNext()) {             balance += Balance.nextDouble();             count1++;         }             Accounts line = new Accounts(account, balance);             out.printf("%s %.2f \n",line.account, line.balance);         }     void start() {            readFileIn();        }    public static void main(String[] args) {        // TODO Auto-generated method stub        new Bank().start();    }}package Bank;class Accounts {    String account;    double balance;    Accounts(String account, double balance){        this.account = account;        this.balance = balance;    }}我得到的結果如下:0015 0,00 0020 0,00 0034 0,00 0069 0,00 0085 0,00 0091 0,00 0128 0,00 0129 0,00 0135 0,00 0189 0,00有什么辦法可以解決這個問題,以便我獲得實際余額嗎?
查看完整描述

3 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

Scanner您可以簡單地使用Double.parseDouble()來獲取第二列的值,而不是使用附加值,即


void readLine(String Account) {

    String[] part1 = Account.split(" ");

    String account = part1[0];

    double balance = Double.parseDouble(part1[1]);

    Accounts line = new Accounts(account, balance);


    ...

}

如果列不是由單個空格分隔的,那么最好使用更通用的分隔符,例如split("\\s+")可接受多個空格和制表符。


查看完整回答
反對 回復 2024-01-28
?
慕碼人8056858

TA貢獻1803條經(jīng)驗 獲得超6個贊

值之間有多個空格。例如"0015      112.34".split(" "),{"0015","","","","","","","112.34"}當您使用索引 1 時,您只會得到一個空字符串。您應該按整個空格序列分割該行,例如account.split("\\s+")(使用正則表達式)。

另請注意,您不需要掃描儀來查找雙精度值。你可以只使用Double.valueOf(balanceAsString). 請記住,按照慣例,所有變量名稱都應以小寫字母開頭。


查看完整回答
反對 回復 2024-01-28
?
慕尼黑5688855

TA貢獻1848條經(jīng)驗 獲得超2個贊

使用split(" +")或 更好地split("\\s+")在空白處(也包括制表符)進行多次分割,至少一次。也hasNextLine/hasNextDouble比hasNext.


實際上:


     String[] part1 = Account.split("\\s+");

     String account = part1[0];

     String balance1 = part1[1];

     double balance = Double.parseDouble(balance1);


查看完整回答
反對 回復 2024-01-28
  • 3 回答
  • 0 關注
  • 254 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號