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);
}
}

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
开始你的循环要求操作,然后编号。

TA贡献1864条经验 获得超6个赞
Appart 其他用户已经注意到了。错误的 switch case 语句和同一流中的多个读取器。我建议以下。
您必须在使用变量 answer 之前对其进行初始化。例如到 0。
Second num+=num
手段num = num + num
和你想要的是将运算结果累积到答案中,例如,answer = answer+num
。这可以通过answer+=num
.
通过此更改,您的计算器应该可以正常工作。
添加回答
举报