有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在同一个现有变量上多次更改变量的值?(爪哇)

因此,我向自己提出了挑战,创建了一个简单的计算器,其中包含了一个用户输入系统

第一位代码(如下所示)询问用户他们的号码,并将其存储在名为“num.”的双精度

然后程序询问用户想要做什么(加、减、乘、除或显示答案),我将其放入while循环中,,因为我认为他们可能想要处理2个以上的数字。如果用户想要答案,那么他们将选择该答案,while循环将停止

我的问题是,我希望程序能够获取数字,并将其与之前的现有数字相加、相减等。本质上,我希望变量的值反复改变,但我不知道怎么做

例如,如果用户从数字2开始,加上2,然后乘以4,那么答案应该是16。我就是不能让我的代码去做那件事

考虑到我已经测试过了,我意识到我的代码是错误的,但我就是不知道我需要做什么。我觉得自己已经很接近了,但任何事情都可以进行,因为我对Java还是有点陌生

任何帮助都将不胜感激!谢谢

我想这个链接可以把你带到这个网站去编辑它,什么都可以:https://repl.it/@ANGELRAMIREZ6/Basic-Calculator

这是我的密码:

import java.util.Scanner;

class Main {

  public static void main(String args[]) {

    Scanner userWhatWillDo = new Scanner(System.in);
    Scanner userNum = new Scanner(System.in);

    double num, answer;
    int what, numOfNums, keepGoing = 1;

    while (keepGoing == 1) {

       System.out.print("Enter a number: ");
       num = userNum.nextDouble();

       System.out.println("1=Add; 2=Subtract; 3=Multiply; 4=Divide; 5=Answer");
       what = userWhatWillDo.nextInt();

       switch(what) {
         case 1:
            num += num;
            break;

        case 2:
            num -= num;
            break;

        case 3:
            num *= num;

        case 4:
            num /= num;
      }

      if(what == 5) {
        keepGoing = 2;
        System.out.println(answer);
      }
  }
 }
}

共 (3) 个答案

  1. # 1 楼答案

    其他用户也注意到了。错误的switch case语句和同一流中的多个读取器。我建议如下

    在使用变量answer之前,必须对其进行初始化。例如,0

    Second num+=num意味着num = num + num,您需要的是将操作结果累加成如下答案:answer = answer+num。这可以通过answer+=num实现

    有了这些变化,你的计算器应该能正常工作

  2. # 2 楼答案

    多亏了大家的贡献和帮助,我的代码得到了调整,我的第一个计算器开始工作了!这是非常基本的,可以真正使用大量的工作;这么多的工作,但基本的工作已经完成了!它本质上是一个工作计算器!不过,它只能做加法、减法、乘法和除法。它不能做更多的事情。如果有人想看看我现在有什么,我会发布代码的链接,这样你可以运行它,如果你愿意。再次感谢大家

    链接:https://repl.it/@ANGELRAMIREZ6/Basic-Calculator-1Fixed

    (我是如何修复代码的-解释)好吧,回顾我的第一段代码,我确实有一些不必要的扫描器,最后我把它们拿了出来(为托马斯·克洛格和史蒂文·斯彭金干杯)

    完成后,我确定了计算方法。起初,我不知道它们应该如何工作,所以我非常笨拙地让它们都与同一段代码相关:num+=num,这基本上是num=num+num(齐姆库斯、丹尼尔·里韦罗·卡佩兰和史蒂文·斯彭金的道具让我看到了这个愚蠢的错误。我把它改为answer+=num,这更有意义

    在修正了计算之后,我认为我的代码可以工作,但我停了下来,因为我得到的计算完全是随机的,根本不正确。或者,更确切地说,程序正在做正确的事情,做我错误编码的事情。特别感谢史蒂文·斯彭金,他将这一切一成不变,帮助我认识到问题在于我的价值观的存储方式

    循环不断询问要使用哪些数字以及要对这些数字执行哪些操作(添加、减去等)之前,我会提示用户要从哪个数字开始,并将该值设置为回答,,然后我运行循环在此循环中,由相同提示输入的任何数字,输入一个数字,都将存储到num变量中,并最终被加、减、乘或除至初始数字,其值为应答从逻辑上/数学上讲,这是有意义的,考虑到第一个值是答案,,后面的数字是num,,当您查看以下代码时,这是有意义的:答案+=num

    总而言之,这是一个简单的程序,启动时执行起来有点棘手(至少对我来说是这样)。我向任何一个Java编程初学者推荐这个小项目。程序还远未完成,我相信代码可以更高效地执行,但我会继续,并采用我的char=W;为了这个。(我甚至添加了一个“被零除”的错误。你自己试试吧!)

    非常感谢所有帮助过你的人

    如果链接不起作用,以下是我的工作代码:

    导入java。util。扫描仪

    扫描仪sc=新的扫描仪(System.in)

    双数值=0,答案=0; int what,keepGoing=1,keepAsking=1

    系统。出来println(“输入一个数字:”); 答案=sc.nextDouble()

    而(keepGoing==1){

      System.out.println("1=Add; 2=Subtract; 3=Multiply; 4=Divide; 5=Answer");
      what = sc.nextInt();
    
      if (what != 5) {
          do {
          System.out.println("Enter a number: ");
          num = sc.nextDouble();
          keepAsking = 2;
        }
      while (keepAsking == 1);
      }
    
      switch(what) {
        case 1:
        answer += num;
        break;
    
        case 2:
        answer -= num;
        break;
    
        case 3:
        answer *= num;
        break;
    
        case 4:
        answer /= num;
        break;
      }
    
      if (what == 4 && answer == 0) {
        System.out.println("ERROR. Cannot divide by zero. Try again.");
        keepGoing = 2;
      }
    
        if(what == 5) {
        keepGoing = 2;
        keepAsking = 2;
        System.out.println(answer);
        }
    }
    
  3. # 3 楼答案

    • 使用println而不是print刷新输出,或手动刷新
    • 你只需要一台扫描仪
    • 初始化answer为0
    • 交换机中的行应该改变answer
          case 1:
          answer += num;
          break;
    
    • 在每个case中使用break

    此外:

    • 检查divide by 0
    • 捕获无效的输入错误
    Scanner sc = new Scanner(System.in);
    
    double num, answer=0;
    int what, numOfNums, keepGoing = 1;
    
    while (keepGoing == 1) {
    
        System.out.println("Enter a number: ");
        num = sc.nextDouble();
    
        System.out.println("1=Add; 2=Subtract; 3=Multiply; 4=Divide; 5=Answer");
        what = sc.nextInt();
    
        switch(what) {
          case 1:
          answer += num;
          break;
    
          case 2:
          answer -= num;
          break;
    
          case 3:
          answer *= num;
          break;
    
          case 4:
          answer /= num;
          break
        }
    
        if(what == 5) {
          keepGoing = 2;
          System.out.println(answer);
        }
    }
    

    要修复计算逻辑,请执行以下操作:

    • 询问号码并分配给answer
    • 启动循环请求操作,然后输入数字