因此,我向自己发起挑战,以创建一个集成了用户输入系统的简单计算器。
第一行代码(如下所示)询问用户其号码是什么,并将其存储在名为“ 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);
}
}
}
}
答案 0 :(得分:0)
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);
}
}