如何多次更改同一个现有变量之上的变量值? (Java)
How do I change the value of a variable on top of the same existing variable -- multiple times? (Java)
因此,我挑战自己创建一个包含用户输入系统的简单计算器。
第一段代码(如下所示)询问用户他们的电话号码是多少,并将其存储在名为 "num."[= 的 double 中35=]
程序然后询问用户他们想做什么(加、减、乘、除或显示答案),我把它放在 while 循环中, 因为我在想他们可能想要使用 2 个以上的数字。如果用户想要答案,那么他们会选择那个,while 循环就会停止。
我的问题是,我希望程序能够使用之前的现有数字进行加、减等操作。本质上,我希望变量的值重复变化,但我不知道该怎么做。
例如,如果用户从数字 2 开始,然后加 2,然后乘以 4,则答案应该是 16。我只是无法让我的代码执行此操作。
考虑到我已经测试过,我意识到我的代码是错误的,但我就是无法理解我需要做什么。我觉得我已经接近了,但任何事情都可以进行,因为我对 Java 还是个新手。
如有任何帮助,我们将不胜感激!谢谢!
我认为这个 link 可以带您到网站进行编辑,但不能: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);
}
}
}
}
- 使用 println 而不是 print 来刷新输出,或者手动刷新
- 您只需要一台扫描仪
- 初始化
answer
到0
- 你的 switch 中的行应该改变
answer
case 1:
answer += num;
break;
- 在每个
case
中使用 break
还有:
- 检查
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
- 开始你的循环请求操作,然后是数字。
Appart 其他用户已注意到。错误的 switch case 语句和同一流中的多个读取器。我建议如下。
你必须在使用前初始化变量answer。例如到 0.
Second num+=num
表示 num = num + num
并且您想要的是在答案中累积运算结果,例如 answer = answer+num
。这可以通过 answer+=num
.
来实现
通过此更改,您的计算器应该可以正常工作。
感谢所有贡献和帮助调整我的代码的人,我成功地让我的第一个计算器工作了!它非常基础,确实需要大量工作;这么多的工作,但基本已经完成了!它本质上是一个工作计算器!虽然,它只能做加法、减法、乘法和除法。它不能做更多的事情。如果有人想看看我现在有什么,我会 post 将 link 添加到代码中,这样你就可以 运行 如果你愿意的话。再次感谢大家。
Link: 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,这更有意义。
修复计算后,我认为我的代码可以工作,但我停下来了,因为我得到的计算完全 运行dom 并且根本不正确。或者,更确切地说,该程序正在做我错误地编码它要做的事情。特别感谢 Steven Spungin,他把这一切都放在了石头上,并帮助我理解了问题出在我的价值观的存储方式上。
在 loop 会不断询问要使用哪些数字以及要对它们执行什么操作(加、减等)之前,我提示了用户他们希望从什么数字开始并将该值设置为 answer, 然后我 运行 loop. 在这个循环中, 由相同提示 Enter a number 输入的任何数字都将存储到 num 变量中,并最终进行加、减、乘、或除以初始数字,其值为 answer. 和 logically/mathematically,这是有道理的,考虑到第一个值将是 answer, 之后的数字将是 num, 并且当您查看此代码时它是有意义的:answer += num.
总而言之,这是一个简单的程序,但启动起来有些棘手(至少对我而言)。我向 Java 编码初学者推荐这个小项目。该程序远未完成,我确信代码可以更有效地执行,但我会继续并使用我的 char = W;对于这个。 (我什至添加了一个 "divide by zero" 错误。继续自己尝试吧!)
非常感谢所有提供帮助的人!
如果 link 不起作用,这是我的工作代码:
进口java.util.Scanner;
扫描仪 sc = 新扫描仪(System.in);
double num = 0, answer=0;
int what, keepGoing = 1, keepAsking = 1;
System.out.println("Enter a number: ");
答案 = 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);
}
}
因此,我挑战自己创建一个包含用户输入系统的简单计算器。
第一段代码(如下所示)询问用户他们的电话号码是多少,并将其存储在名为 "num."[= 的 double 中35=]
程序然后询问用户他们想做什么(加、减、乘、除或显示答案),我把它放在 while 循环中, 因为我在想他们可能想要使用 2 个以上的数字。如果用户想要答案,那么他们会选择那个,while 循环就会停止。
我的问题是,我希望程序能够使用之前的现有数字进行加、减等操作。本质上,我希望变量的值重复变化,但我不知道该怎么做。
例如,如果用户从数字 2 开始,然后加 2,然后乘以 4,则答案应该是 16。我只是无法让我的代码执行此操作。
考虑到我已经测试过,我意识到我的代码是错误的,但我就是无法理解我需要做什么。我觉得我已经接近了,但任何事情都可以进行,因为我对 Java 还是个新手。
如有任何帮助,我们将不胜感激!谢谢!
我认为这个 link 可以带您到网站进行编辑,但不能: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);
}
}
}
}
- 使用 println 而不是 print 来刷新输出,或者手动刷新
- 您只需要一台扫描仪
- 初始化
answer
到0 - 你的 switch 中的行应该改变
answer
case 1:
answer += num;
break;
- 在每个
case
中使用
break
还有:
- 检查
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
- 开始你的循环请求操作,然后是数字。
Appart 其他用户已注意到。错误的 switch case 语句和同一流中的多个读取器。我建议如下。
你必须在使用前初始化变量answer。例如到 0.
Second num+=num
表示 num = num + num
并且您想要的是在答案中累积运算结果,例如 answer = answer+num
。这可以通过 answer+=num
.
通过此更改,您的计算器应该可以正常工作。
感谢所有贡献和帮助调整我的代码的人,我成功地让我的第一个计算器工作了!它非常基础,确实需要大量工作;这么多的工作,但基本已经完成了!它本质上是一个工作计算器!虽然,它只能做加法、减法、乘法和除法。它不能做更多的事情。如果有人想看看我现在有什么,我会 post 将 link 添加到代码中,这样你就可以 运行 如果你愿意的话。再次感谢大家。
Link: 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,这更有意义。
修复计算后,我认为我的代码可以工作,但我停下来了,因为我得到的计算完全 运行dom 并且根本不正确。或者,更确切地说,该程序正在做我错误地编码它要做的事情。特别感谢 Steven Spungin,他把这一切都放在了石头上,并帮助我理解了问题出在我的价值观的存储方式上。
在 loop 会不断询问要使用哪些数字以及要对它们执行什么操作(加、减等)之前,我提示了用户他们希望从什么数字开始并将该值设置为 answer, 然后我 运行 loop. 在这个循环中, 由相同提示 Enter a number 输入的任何数字都将存储到 num 变量中,并最终进行加、减、乘、或除以初始数字,其值为 answer. 和 logically/mathematically,这是有道理的,考虑到第一个值将是 answer, 之后的数字将是 num, 并且当您查看此代码时它是有意义的:answer += num.
总而言之,这是一个简单的程序,但启动起来有些棘手(至少对我而言)。我向 Java 编码初学者推荐这个小项目。该程序远未完成,我确信代码可以更有效地执行,但我会继续并使用我的 char = W;对于这个。 (我什至添加了一个 "divide by zero" 错误。继续自己尝试吧!)
非常感谢所有提供帮助的人!
如果 link 不起作用,这是我的工作代码:
进口java.util.Scanner;
扫描仪 sc = 新扫描仪(System.in);
double num = 0, answer=0; int what, keepGoing = 1, keepAsking = 1;
System.out.println("Enter a number: "); 答案 = 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);
}
}