gpt4 book ai didi

java - 调用 line.isEmpty() 方法时出现重复的答案输出

转载 作者:行者123 更新时间:2023-12-01 09:55:14 25 4
gpt4 key购买 nike

我编写了一个程序,它接受输入(用户输入或通过文本文件处理)并根据发现的内容调用数学计算。

问题是,一旦得出答案并将其打印出来,扫描仪检测到的每个 line.isEmpty() 都会重新计算并打印出之前的答案。如果有4个空行,则会打印4次,直到另一个问题被解析到程序中。

这是我的主要方法:

public static void main(String[] args) {
Calc calc = new Calc();
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String input = "";
List<String> strs = new ArrayList<>();
//
ArrayList<String> tokens;
//this makes sure an entire problem is added as a tokens element
while (sc.hasNextLine()) {
String line = sc.nextLine().trim();
if (line.isEmpty()) {
for (String s : strs) {
sb.append(s);
input = sb.toString();
}
tokens = new ArrayList<>(Arrays.asList(input.split(" ")));
//call calculate on strs then reset
calc.calculate(tokens);
strs.clear();
tokens.clear();
sb.setLength(0);
} else if (line.length() == 1) {
strs.add(" ");
strs.add(line);
strs.add(" ");
} else {
strs.add(line);
}
}
}

计算方法:

public String calculate(List<String> tokens) {
operands = new Stack<>();
for (int i = 0; i < tokens.size(); i++) {
tokens.removeAll(Arrays.asList(""));
}
String result = processOperands(tokens);

if (result.equals(null)) {
System.out.println(result);
return defaultResult;
} else if (result.equals("java.lang.IllegalArgumentException: Attempting to add with fewer than 2 operands.")) {
System.out.println(result);
return "java.lang.IllegalArgumentException: Attempting to add with fewer than 2 operands.";
} else {
System.out.println(result);
return result.replaceAll("[^\\d.]", "");
}
}

用于输入:

2 2 +


4
3 +

输出:

4
4
4
7

显然,问题是我每次检测到空字符串时都会调用计算,因为目前它是如何知道问题何时完成“输入”的。

我如何修改它以知道不打印相同的答案两次,或者在找到另一个答案之前不计算答案?

最佳答案

输入变量未在您的逻辑中重置。清除 strs、tokens 并重置 'sb' 变量后,设置 input = "";

关于java - 调用 line.isEmpty() 方法时出现重复的答案输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288128/

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