java - 在 while 循环中停止重复的 Println,BlueJ

标签 java bluej

下面是我到目前为止的代码,它是我的计算机科学课上的计算器。我遇到的问题是在程序第二次运行时 System.out.print("你想执行计算吗?(y/n) ");运行两次而不是一次。我已经提交了该项目,但我想知道它为什么会这样做以及在我 future 的程序中如何修复它。我将在下面发布其余的代码。

感谢大家的帮助,我将获得的“A”归功于你们所有人。谢谢!

/**
* A calculator with multiple functions.
* @author () 
* @version (version 2.1)
*/
import java.io.*;
import java.util.Scanner;
public class Calc
{
  public static void main(String args[])
  {
    Scanner reader = new Scanner(System.in);
    String cont = "", funct = "";
    double fnum = 0, snum = 0, answer = 0;

    while(true)
    {
        System.out.print("Would you like to perform a calculation? (y/n) ");
        cont = reader.nextLine();
        if (cont.equalsIgnoreCase("y"))
        {
            System.out.println("What function would you like to do?");
            System.out.println("+?");
            System.out.println("-?");
            System.out.println("*?");
            System.out.println("/?");
            funct = reader.nextLine();
            if (funct.equals("+"))
            {
                System.out.println("Simple addition calculator");
                System.out.println("Enter first num: ");
                fnum = reader.nextDouble();
                System.out.println("Enter second num: ");
                snum = reader.nextDouble();
                answer = fnum + snum;
                System.out.println("Answer: " + answer);
                System.out.println(" ");
            }
            if (funct.equals("-"))
            {
                 System.out.println("Simple subtraction calculator");
                System.out.println("Enter first num: ");
                fnum = reader.nextDouble();
                System.out.println("Enter second num: ");
                snum = reader.nextDouble();
                answer = fnum - snum;
                System.out.println("Answer: " + answer);
                System.out.println(" ");
            }
            if (funct.equals("*"))
            {
                 System.out.println("Simple multiplication calculator");
                System.out.println("Enter first num: ");
                fnum = reader.nextDouble();
                System.out.println("Enter second num: ");
                snum = reader.nextDouble();
                answer = fnum * snum;
                System.out.println("Answer: " + answer);
                System.out.println(" ");
            }
            if (funct.equals("/"))
            {
                 System.out.println("Simple division calculator");
                System.out.println("Enter first num: ");
                fnum = reader.nextDouble();
                System.out.println("Enter second num: ");
                snum = reader.nextDouble();
                answer = fnum / snum;
                System.out.println("Answer: " + answer);
                System.out.println(" ");
            }
        }
        else if (cont.equalsIgnoreCase("n"))
        {
            break;
        }

    }
  }
}

最佳答案

在循环内的所有函数条件中,您正在使用reader.nextDouble()。这只会读取输入的数字(例如“8”),而不读取用户在数字后输入的新行(回车)。 以下减号(-) 函数的代码不会打印两次“您想执行计算吗?(y/n)”,因为新行已被读取。这里使用reader.nextLine()而不是reader.nextDouble()reader.nextLine() 将读取整行,而不仅仅是数字。

if (funct.equals("-"))
        {
            System.out.println("Simple subtraction calculator");
            System.out.println("Enter first num: ");
            fnum = Double.parseDouble( reader.nextLine());
            System.out.println("Enter second num: ");
            snum = Double.parseDouble( reader.nextLine());
            answer = fnum - snum;
            System.out.println("Answer: " + answer);
            System.out.println(" ");
        }

关于java - 在 while 循环中停止重复的 Println,BlueJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33447683/

相关文章:

java - 类不是抽象的,并且不会在抽象方法中重写

java - 二十一点游戏,需要造型帮助

java - Java中的"int cannot be dereferenced"

java - 如何将 ArrayList 中的对象添加到另一个类中的另一个 ArrayList

java - 从 ArrayList 中删除给定长度的字符串?

java - Java 中的 PrintWriter write() 与 print() 方法

java - Java 中的几何变换序列

java - 为什么菜单栏不显示?

java - 在java中使用逻辑或而不重复条件中的变量

java - 从 JSF 请求中检索 session ID 值