为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2022-07-06 16:04:47
因此,我挑战自己创建一个包含用户输入系统的简单计算器。第一段代码(如下所示)询问用户他们的号码是多少,并将其存储在一个名为“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 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

感谢所有贡献并帮助调整我的代码的人,我设法让我的第一个计算器工作!这是非常基础的,真的可以做很多工作;这么多的工作,但基本已经完成了!它本质上是一个工作计算器!虽然,它只能做加法、减法、乘法和除法。它不能做更多的事情。如果有人想看看我现在拥有的东西,我会发布代码的链接,以便您可以根据需要运行它。再次感谢大家。


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


(我如何修复我的代码 - 解释) - 好的,回顾我的第一段代码,我确实有一些不必要的扫描仪,我最终取出了(为 Thomas Kläger 和 Steven Spungin 欢呼)。


之后,我修复了计算的完成方式。最初,我无法理解它们应该如何工作,所以我非常笨拙地让它们都与同一段代码相关:num += num,本质上是num = num + num(对 tshimkus 的支持, Daniel Rivero Capellan 和 Steven Spungin 让我看到了这个愚蠢的错误。我把它改成了answer += num,这更有意义。


修正计算后,我认为我的代码可以工作,但我停下来,因为我得到的计算是完全随机的,根本不正确。或者,更确切地说,程序在做我错误地编码它要做的事情时做的事情是正确的。特别感谢 Steven Spungin,他一刀切,帮助我理解问题出在我的价值观被存储的方式上。


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


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


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


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


导入 java.util.Scanner;


扫描仪 sc = new Scanner(System.in);


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


System.out.println("请输入一个数字:"); 答案 = sc.nextDouble();


而(继续== 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);

    }

}


查看完整回答
反对 回复 2022-07-06
?
当年话下

TA贡献1890条经验 获得超9个赞

  • 使用 println 而不是 print 来刷新输出,或者手动刷新

  • 您只需要 1 台扫描仪

  • 初始化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

开始你的循环要求操作,然后编号。


查看完整回答
反对 回复 2022-07-06
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

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

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

Second num+=num手段num = num + num和你想要的是将运算结果累积到答案中,例如,answer = answer+num。这可以通过answer+=num.

通过此更改,您的计算器应该可以正常工作。


查看完整回答
反对 回复 2022-07-06
  • 3 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号