如何在同一个现有变量上多次更改变量的值?(爪哇)
因此,我向自己提出了挑战,创建了一个简单的计算器,其中包含了一个用户输入系统
第一位代码(如下所示)询问用户他们的号码,并将其存储在名为“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);
}
}
}
}
# 1 楼答案
其他用户也注意到了。错误的switch case语句和同一流中的多个读取器。我建议如下
在使用变量answer之前,必须对其进行初始化。例如,0
Second num+=num
意味着num = num + num
,您需要的是将操作结果累加成如下答案:answer = answer+num
。这可以通过answer+=num
实现有了这些变化,你的计算器应该能正常工作
# 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){
# 3 楼答案
answer
为0answer
case
中使用break
此外:
divide by 0
要修复计算逻辑,请执行以下操作:
answer