gpt4 book ai didi

java - 在java中使用静态变量

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

我尝试打印链接列表实现的堆栈元素。

但是要按照堆栈本身的顺序打印,我需要 java 中的静态变量。

public void display()
{
<STATIC> <here I need> LinkedListImp temp = this;

while(temp.next!=null)
{
temp=temp.next;
display();
}

System.out.println("\n\t"+ temp.element +"\n");;
}

但是在这样声明时,我收到错误。

我已经在界面概念中实现了display()。因此我不能显示(LinkedListImp temp)。

interface StackMethods
{
int pop();
void push(int numberint);
void display();
}

例如,如果栈的元素是1然后2然后3。我不希望输出为 1 2 3 或 1 (newline) 2 (newline) 3。
相反,我想要 3 (换行符) 2(换行符) 1(尽管不需要演示真实的堆栈)

还有其他方法可以实现吗?

最佳答案

如果您希望 temp 的值不依赖于 display() 父类的实例(LinkedListImp?) ,那么你需要一个静态类变量。在 Java 中,static 关键字标记属于整个类而不是单个实例的变量。 Java 中的静态创建一个变量,也称为“类变量”。根据定义,类变量不能是局部的。要了解有关静态变量的更多信息,请参阅 documentation不得不说或者查看this StackOverflow question that has the spec in an answer

但看起来您想要做的是使用类的实例,这意味着您不需要静态变量。您绝对希望将值(value)与类(class) Hook 。

但是,为了使其工作,您需要在 while 循环中的两个语句周围加上大括号。否则,您将得到一个循环遍历链表的所有元素并仅打印最后一个元素的程序。这是因为在 Java 中 if block 语句(ifelseforwhile 等)是后面不跟大括号,它仅将下一行视为 block 的内容。

public void display()
{
LinkedListImp temp = this;
while(temp.next!=null)
{
System.out.println("\n\t"+ temp.element +"\n");
temp=temp.next;
}
}

要使用循环反转此处的顺序,我将使用 StringBuilder并建立一个字符串。

public void display()
{
LinkedListImp temp = this;
StringBuilder result = new StringBuilder();
while(temp.next!=null)
{
result.insert(0, "\n\t"+ temp.element +"\n"); // put the result at the front
temp=temp.next;
}
System.out.println(result.toString());
}

根据您的编辑,您已添加对该方法的递归调用,但这对于循环来说不是必需的。如果您正在进行递归,请删除循环。在这种情况下,递归充当循环。在这种情况下,只需在调用显示后打印出该项目,并在下一个项目中进行倒序,或者在标准顺序之前打印出来。

public display() {
doDisplay(this);
}

private void doDisplay(LinkedListImpl item) {
if(item.next) // implicit != null
{
doDisplay(item.next);
}
System.out.println("\n\t" + temp.element + "\n"); // this line goes before
// the if statement for
// regular ordering
}

关于java - 在java中使用静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525992/

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