gpt4 book ai didi

java - 当队列有数据时,为什么我的输出打印为空?

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

我正在尝试让一个程序根据两个范围变量打印 x 次方程的答案。我创建了一个队列变量,它将在进入 for 循环之前保存一个方程。在我的 for 循环中,我创建了队列的备份版本,因为当我将其发送到另一个方法时,它会从该队列中删除值,最终留下一个空队列。我在方法中使用该备份,然后将其重新声明到 for 循环顶部的原始队列。

我的问题是,它一旦给了我想要的输出就可以工作,但是,每次之后,它都会打印出 null。我的猜测是因为它认为队列是空的但我不明白为什么。下面是我的主文件的代码,应该足够了。

public class Main {

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Infix Expression: ");
String expression = keyboard.nextLine();
GenericQueue<Token> result = new GenericQueue<Token>();

Scanner keyboard2 = new Scanner(System.in);
System.out.print("Range: ");
String range = keyboard2.nextLine();

int start = 0;
int end = 5;
String var = "x";

Process.toPostfix(expression, result);

for (int i=start; i<=end; i++) {
GenericQueue<Token> backup_result = result;
System.out.println(backup_result.toString());
Rational answer = Process.evaluate(backup_result, i, var);
System.out.println(i + " " + answer);
}

keyboard.close();
keyboard2.close();
}
}

这是我的输出:

    Infix Expression: (5+x)
Range: f
5 x +
0 5

1 null

2 null

3 null

4 null

5 null

最佳答案

当你写的时候

GenericQueue<Token> backup_result = result;

您实际上并未复制队列,而只是对其的引用。您对 result 所做的任何更改都将反射(reflect)在 backup_result 中,反之亦然。您只有一个队列,有两个名字。

这只是问题之一...另一个问题是,如果您需要将队列复制到备份中,那么您对队列的思考方式是错误的:它们是为您的代码的一部分而设计的东西放进去,另一个人把它们移走并处理它们。

关于java - 当队列有数据时,为什么我的输出打印为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578278/

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