【问题标题】:Using Double.parseDouble( ) within I/O在 I/O 中使用 Double.parseDouble()
【发布时间】:2015-07-26 19:46:15
【问题描述】:

我正在尝试编写一个程序,该程序从用户那里获取一系列五个双精度字符串值,然后尝试使用Double.parseDouble() 方法将这些字符串转换为双精度值。我遇到的麻烦是我必须在下一个“Please enter a number”弹出之前输入两个值。这是我得到的输出:

Please enter a number 1: 4
3
Please enter a number 2: 5
4
Please enter a number 3: 3
4
Please enter a number 4: 5
6
Please enter a number 5: 4
2
The average is: 3.8 

这是我的代码:

import java.io.*;
import java.util.Scanner;

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

    // Variables
        int counter;
        int userEntries = 5;
        double sum = 0;


        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);


    // Creating a new Scanner
        Scanner scanner = new Scanner(System.in);

    // Loop for the five entries    
        for (counter = 1; counter <= userEntries; counter++) {
            String input = "";
            System.out.print("Please enter a number " + counter + ": ");
            input = br.readLine();
            double number = Double.parseDouble(input);
            sum += scanner.nextDouble();
        }   

    // Print statements
        System.out.println("The average is: " + sum / userEntries);


    } // End of method header
} // End of class header

解决此问题的最佳方法是什么?我假设这是因为sum += scanner.nextDouble(); 但我需要它增加所以我真的不能删除它。

【问题讨论】:

  • 您正尝试将每个数字读取两次。我建议你一次只读一个数字。要么使用 readLine() & parseDouble 要么使用scanner.nextDouble()。

标签: java io increment


【解决方案1】:

您已经拥有双精度,因此无需使用Scanner.nextDouble()nextDouble() 方法将输入的下一个标记扫描为双精度。你应该做的是sum += number

【讨论】:

  • 啊……我知道问题出在那个区域。谢谢!
【解决方案2】:
final int userEntries = 2;
Scanner in = new Scanner(System.in);
double sum = 0.0;

for (int counter = 1; counter <= userEntries; ++counter) {
    System.out.printf("Please enter a number %d: ", counter);
    sum += in.nextDouble();
}

System.out.printf("The average is: %.2f%n", sum / userEntries);

【讨论】:

    【解决方案3】:

    这是一个更新的代码 -

    import java.io.*;
    import java.util.Scanner;
    
    public class theman {
        public static void main(String[] args) throws IOException{
    
        // Variables
        int counter;
        int userEntries = 5;
        double sum = 0;
    
        // Creating a new Scanner
        Scanner scanner = new Scanner(System.in);
    
        // Loop for the five entries
        for (counter = 1; counter <= userEntries; counter++) {
             System.out.print("Please enter a number " + counter + ": ");
             sum += scanner.nextDouble();
        }
    
        // Print statements
        System.out.println("The average is: " + sum / userEntries);
    
    
      } // End of method header
    } // End of class header
    

    【讨论】:

    • 仅仅修复代码并不能解决问题。您希望读者浏览您的所有代码,并从视觉上区分与原始问题代码的差异。解释原始代码做错了什么,并解释你的更改。
    猜你喜欢
    • 2011-12-31
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多