gpt4 book ai didi

java - 如何退出java中的返回循环?

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:42 27 4
gpt4 key购买 nike

我本身对编程并不陌生,我已经学习 C# 很长一段时间了,但我自己并没有真正做过很多练习,我现在才开始使用 java,因为我想做Android 应用程序和测试我新获得的知识我想做一个基本的控制台计算器,这是我到目前为止得到的:

package calculatorSource;

import java.util.*;

public class calculatorJava {
private static Scanner input;

public static void main(String[] args) {
System.out.println("Select an operation");

String choice = null;
input = new Scanner(System.in);

while(choice == null) {
System.out.println("Type 'a' for adition, 's' for subtraction, 'm' for multiplication," + " 'd' for division, or 'mo' for module.");
choice = input.next();
}

while(choice != null) {
if(choice.equals("a")) {
System.out.println(adition(0, 0));
choice = null;
} else if(choice.equals("s")) {
System.out.println(subtraction(0, 0));
choice = null;
} else if(choice.equals("m")) {
System.out.println(multiplication(0, 0));
choice = null;
} else if(choice.equals("d")) {
System.out.println(division(0, 0));
choice = null;
} else if(choice.equals("mo")) {
System.out.println(module(0, 0));
choice = null;
} else {
System.out.println("Option not available, please try again.");
choice = null;
}
}
}

public static float adition(float n1, float n2) {
input = new Scanner(System.in);

float result;

System.out.println("Enter first number:");
n1 = input.nextFloat();

System.out.println("Enter second number:");
n2 = input.nextFloat();

result = n1 + n2;

System.out.println("Result is: " + result);

return adition(result, result);
}

public static float subtraction(float n1, float n2) {
input = new Scanner(System.in);

float result;

System.out.println("Enter first number:");
n1 = input.nextFloat();

System.out.println("Enter second number:");
n2 = input.nextFloat();

result = n1 - n2;

System.out.println("Result is: " + result);

return subtraction(result, result);
}

public static float multiplication(float n1, float n2) {
input = new Scanner(System.in);

float result;

System.out.println("Enter first number:");
n1 = input.nextFloat();

System.out.println("Enter second number:");
n2 = input.nextFloat();

result = n1 * n2;

System.out.println("Result is: " + result);

return multiplication(result, result);
}

public static float division(float n1, float n2) {
input = new Scanner(System.in);

float result;

System.out.println("Enter first number:");
n1 = input.nextFloat();

System.out.println("Enter second number:");
n2 = input.nextFloat();

result = n1 / n2;

System.out.println("Result is: " + result);

return division(result, result);
}

public static float module(float n1, float n2) {
input = new Scanner(System.in);

float result;

System.out.println("Enter first number:");
n1 = input.nextFloat();

System.out.println("Enter second number:");
n2 = input.nextFloat();

result = n1 % n2;

System.out.println("Result is: " + result);

return module(result, result);
}
}

我知道它可能不是最好或更高效的计算器,但正如我所说,我刚开始使用 Java,这几乎是我目前所知道的全部,该程序可以运行,因为我可以添加,一个部门或我选择的其他任何东西,但在那之后我希望它给我选择不同操作的选项,我在返回后立即放置“choice = null”但它似乎不起作用,我到目前为止我已经尝试了几种方法,但我开始觉得我可能误解了 return 的实际作用,所以我认为最好向你们寻求帮助。

感谢任何建议,谢谢!

最佳答案

代替

return adition(result, result);

在您的adition 方法中,返回result

否则,您将重复相同的方法,直到堆栈溢出。 (其他方法也一样)。


您的 while (choice != null) { 循环不是必需的,因为您总是设置 choice = null;。由于您也不会以其他方式更改该循环中 choice 的值,因此您也可以删除该循环。


将参数传递给 adition(等)方法没有意义,因为您总是会覆盖它们。只需在这些方法中将它们声明为局部变量即可:

public static float adition() {  // No parameters
// ...
float n1 = input.nextFloat();
// ...
float n2 = input.nextFloat();

关于java - 如何退出java中的返回循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com