Tag: 堆栈

后缀计算器Java

好的,我必须从文件中读取后缀表达式。 后缀表达式必须有空格来分隔每个运算符或操作数。 到目前为止,只有在输入文件中的运算符或操作数之间没有空格时,我才能使用。 (即如果文件有12+,我得到的结果是3.)为了做到这一点,我认为我需要对输入进行标记化,但我不确定如何。 这就是我到目前为止所拥有的。 感谢您的回复。 import java.util.*; import java.io.*; public class PostfixCalc{ public static void main (String [] args) throws Exception { File file = new File(“in.txt”); Scanner sc = new Scanner(file); String input = sc.next(); Stack calc = new Stack(); while(sc.hasNext()){ for(int i = 0; i < input.length(); i++){ char c = input.charAt(i); […]

JAVA线程(不同堆栈)同步

我有一个关于由多个线程执行的代码同步的问题: 据我所知,每个线程都有自己的堆栈,因此,非静态变量存在于每个线程的内存中的不同位置(对于X线程,存在包含所有非静态变量的X堆栈)。 那么为什么需要同步任何东西呢? 我的意思是,如果线程执行的代码包含一些类变量v1,那么每个线程都有自己的v1实例(不同的内存地址),没有其他线程可以“触摸”它…是不是这样?

关于’new’关键字的Java内存问题

如果您运行以下代码会发生什么? while (true) { String x = new String(“ABC”); } 在记忆方面? 字符串x是在堆栈上还是在堆上分配的? 由于内存溢出,程序最终会崩溃,还是垃圾收集会阻止它? new关键字是否始终在堆上创建对象? 什么时候在堆栈上创建对象? 谢谢!

我将如何在Java中迭代堆栈

我想知道如何在Stack类中使用迭代器。 如何为它创建迭代器类?

java.util.Stack的Iterator中是否有错误?

今天我试图推入java.util.Stack类,然后使用Iterator迭代(不使用pop)项目。 我期待着LIFO的财产,但很惊讶。 这是我正在尝试的代码。 import java.util.*; import java.util.Stack; public class Main { public static void main(String[] args) { RobStack rstack = new RobStack(); // Correct Implementation Stack jstack = new Stack(); // Default Java Implementation rstack.push(0); jstack.push(0); rstack.push(1); jstack.push(1); rstack.push(2); jstack.push(2); rstack.push(3); jstack.push(3); System.out.print(“Algo Stack: “); for (int i : rstack) System.out.print(i + ” “); System.out.print(“\nJava […]

翻译句子中每个单词中的字符 – 堆栈实现

这段代码在main函数中: Scanner input = new Scanner(System.in); System.out.println(“Type a sentence”); String sentence = input.next(); Stack stk = new Stack(); int i = 0; while (i < sentence.length()) { while (sentence.charAt(i) != ' ' && i < sentence.length() – 1) { stk.push(sentence.charAt(i)); i++; } stk.empty(); i++; } 这是empty()函数: public void empty() { while (this.first != null) System.out.print(this.pop()); […]

堆栈添加计算机不添加但挂起等待更多args

所以我有一个我建立的堆栈,我有一台机器来评估表达式,如(9 + 0),它们可能更复杂。 我在命令行上运行它很有趣,然后当我键入示例(9 + 5)时,程序就在那里。 我可以得到一个新的行,但表达式没有评估。 所以我的问题是我错过了什么。 我确信有些东西我没有正确理解,我认为我遗漏了一些有关Scanner或Java中的数组的信息。 也许我昨​​晚想到我应该用ArrayList替换数组。 这有意义吗? 这是固定容量堆栈 public class FCStack { private Item[] a; private int top; // pointer to top of Stack private int capacity; // size of the Stack+1 public FCStack(int cap){ capacity = cap; a = (Item[]) new Object[capacity]; top = 0; } public void push(Item i){ […]

Java平衡表达式检查{}

我试图创建一个程序,将一个字符串作为参数进入其构造函数。 我需要一个方法来检查字符串是否是一个平衡的括号表达式。 它需要处理({[]})每个open需要与其相应的右括号进行平衡。 例如,用户可以输入[({})],这将是平衡的,而{}将是不平衡的。 这不需要处理字母或数字。 我需要使用堆栈来执行此操作。 我得到了这个伪代码,但无法想象如何在java中实现它。 任何建议都很棒。 更新 – 抱歉忘了发布我到目前为止的内容。 这一切搞砸了,因为起初我试图使用char然后我尝试了一个数组..我不确定去哪里。 import java.util.*; public class Expression { Scanner in = new Scanner(System.in); Stack stack = new Stack(); public boolean check() { System.out.println(“Please enter your expression.”); String newExp = in.next(); String[] exp = new String[newExp]; for (int i = 0; i < size; i++) { […]

递归Java – 堆栈

我正在进行递归,在这种情况下…我需要求和一个堆栈的所有值。 我有两个function,但只能使用10000条记录。 我需要一分钟。 请帮帮我! 码: public static void main(String[] args) { Recursion r = new Recursion(); Stack stack = new Stack(); Random rnd = new Random(); int stack_size = 10000; for (int i = 0; i < stack_size; i++) { stack.push(rnd.nextInt(10 – 1)); } int s = r.stack2(stack, 0); //int s = r.stack1(stack, stack_size, 0, […]

创建固定大小的堆栈

我想用Java创建一个Stack,但是要修改它的大小。 例如,创建一个新的Stack,将大小设置为10,然后当我将项目推送到堆栈时它会填满,当它填充到10时,堆栈中的最后一个项目被推下(删除)。 我想使用Stack,因为它使用LIFO并且非常符合我的需求。 但是Stack从Vectorinheritance的setSize()方法似乎并没有实际限制Stack的大小。 我想我错过了一些关于Stacks如何工作的东西,或者Stacks并不意味着被限制,所以这是不可能的。 请教育我!