如何在同一现有变量之上多次更改变量的值? (Java)

时间:2019-02-24 11:43:14

标签: java variables calculator

因此,我向自己发起挑战,以创建一个集成了用户输入系统的简单计算器。

第一行代码(如下所示)询问用户其号码是什么,并将其存储在名为“ num。” double 中。

然后程序会询问用户他们想做什么(加,减,乘,除或显示答案),我将其放在 while循环中,因为我在想他们可能想使用两个以上的数字。如果用户想要答案,那么他们将选择答案,而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 个答案:

答案 0 :(得分:0)

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

也:

  • 检查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
  • 开始循环操作,然后编号。

答案 1 :(得分:0)

Appart其他用户已经注意到。错误的case语句声明和同一流中的多个读取器。我建议以下。

使用前必须先初始化变量答案。例如为0。

Second num+=num的意思是num = num + num,而您想要的是对answer = answer+num之类的答案进行累加运算。这可以通过answer+=num来实现。

进行此更改后,您的计算器应该可以正常工作。

答案 2 :(得分:0)

感谢所有为我的代码做出贡献和帮助的人,我设法使我的第一个计算器正常工作!这是非常基础的,确实可以使用很多工作。这么多的工作,但基本功已完成!它本质上是一个工作的计算器!但是,它只能执行加,减,乘和除运算。它不能做的更多。如果有人想看看我现在拥有什么,我将把链接发布到代码中,以便您可以运行它。再次感谢大家。

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

(我如何修复我的代码-解释)-好的,所以回头看我的第一段代码,我确实有一些不必要的扫描仪被淘汰了(向ThomasKläger和Steven表示欢呼) Spungin)。

之后,我固定了计算方法。最初,我无法确定应该如何工作,所以我很笨拙地使它们都与同一段代码有关: num + = num ,本质上是 num = num + num (tshimkus,Daniel Rivero Capellan和Steven Spungin的道具使我对这个愚蠢的错误大开眼界。我将其更改为 answer + = num ,这使得更多感。

修正计算后,我以为我的代码可以用,但是我停下来了,因为我得到的计算是完全随机的,根本不正确。或者,更确切地说,该程序在执行我错误编写的代码时正在执行正确的操作。特别感谢史蒂文·斯潘金(Steven Spungin),他把这一切摆在了石头上,并帮助我了解到问题在于我的价值观被存储了。

循环不断询问要使用什么数字以及要对它们进行什么操作(加,减等)之前,我提示用户输入他们想要的数字首先将其设置为 answer ,然后运行循环。在此循环中,由同一提示输入的任何数字输入数字,将存储在 num 变量中,最终将其加,减,乘或除为初始值,其初始值为 answer。 /数学上讲,这是有道理的,考虑到第一个值是 answer ,后面的数字是 num ,当您看下面的代码时,这很有意义: answer + =数量

总而言之,这是一个简单的程序,执行起来有些棘手(至少对我而言)。我向任何使用Java编码的初学者推荐这个小项目。该程序还远远没有完成,我相信代码可以更有效地执行,但是我继续,取我的char = W;为此。 (我什至添加了“被零除”错误。继续尝试一下!)

非常感谢被帮助的每个人!

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

导入java.util.Scanner;

Scanner sc = new Scanner(System.in);

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

System.out.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);
    }
}