gpt4 book ai didi

java - 如何在这段代码中优化使用 Java.util.Scanner 读取变量?

转载 作者:行者123 更新时间:2023-12-02 01:45:23 25 4
gpt4 key购买 nike

问题是编写一个程序来读取用户从键盘输入的“数字+运算符+数字”之类的表达式。可能的运算符有 +、-、* 和/。输出应该是该表达式的解。程序应不断询问新的表达式,直到用户输入第一个数字 0。虽然数字和运算符是合法的,但程序不断要求新的表达式来处理。

程序正确地计算了所有内容,但我觉得有一种方法可以使读取变量更有效。例如,必须有一种方法将运算符的变量读取为字符,但是 op = scr.next();使用整个 String,这会消耗更多内存。另外,firstNumber = Double.parseDouble(scr.next()); - 我觉得有一种更优雅的方式来传递 double 值,但我无法理解它。

有什么建议吗?

这是我的代码:


public class simpleCalc {
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
double firstNumber, secondNumber;
double value;
String op;

System.out.println("Enter a number followed by operator followed by another number:");
System.out.println("such as 2 + 2 or 34.2 * 7.81:");

while (true) {
System.out.println("? ");
firstNumber = Double.parseDouble(scr.next());
if (firstNumber == 0)
break;
op = scr.next();
secondNumber = Double.parseDouble(scr.next());
switch (op) {
case "+":
value = firstNumber + secondNumber;
break;
case "-":
value = firstNumber - secondNumber;
break;
case "*":
value = firstNumber * secondNumber;
break;
case "/":
value = firstNumber / secondNumber;
break;
default:
System.out.println("Unknown operator: " + op);
continue;
} // end switch
System.out.println("The value of the expression is " + value);
}
System.out.println("Bye-bye user!");
}
}```

最佳答案

扫描仪非常慢,因为它执行大量解析、正则表达式搜索等等。这是一个有用的工具,但就效率而言,还有更好的选择。

更快的解决方案是将 BufferedReaderStringTokenizer 结合使用。

甚至可以使用 DataInputStreamBufferedInputStream 直接读取数据,速度更快,但这比 BufferedReader 需要编写的代码多得多,而且性能提升很小。

我会发布一些代码供您使用,但我使用的是移动设备,因此我稍后会用一些示例更新我的帖子,但 java 文档是一个很好的起点。

关于java - 如何在这段代码中优化使用 Java.util.Scanner 读取变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57462957/

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