Я делаю калькулятор в Net-beans JFrame и использую Stack для расчета вычисленных переменных. Кажется, я столкнулся с этой ошибкой StringIndexOutOfBounds: 0, и я не могу понять, как ее решить, когда это произойдет. Всякий раз, когда я нажимаю кнопку равенства, которая инициирует стек, появляется сообщение об ошибке. Я думаю, что что-то не так с моим стеком, но опять-таки я не могу понять. И мне действительно нужны свежие глаза.Java JFrame String Index Out of Bounds Error
Я использовал/импортировал качели и .awts, но я не думаю, что они дают мне ошибку, вот мои качели.
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import static java.lang.Math.round;
import java.util.NoSuchElementException;
import java.util.Scanner;
import javax.swing.JFileChooser;
Вот мой Stack:
public class StackCalc
{
private LinkedList stackList = new LinkedList();
private int top, maxTop;
public Object removedEle;
public Object topEle;
public StackCalc(int mt)
{
maxTop=mt;
top=-1;
}
public boolean isFull()
{
return top == maxTop-1;
}
public boolean push (Object O)
{
if(!isFull())
{
stackList.addFirst(O);
top++;
return true;
}
else
{
return false;
}
}
public boolean pop()
{
if(!stackList.isEmpty())
{
removedEle= stackList.removeFirst();
top--;
return true;
}
else
{
return false;
}
}
public void getTop()
{
topEle=stackList.getFirst();
}
public boolean isEmpty()
{
return stackList.isEmpty();
}
}
Вот код, который я думаю, что дает мне эту ошибку
static void processExpR(String exp)
{
boolean advance = true;
String token = " ";
int loc = exp.indexOf(token);
while (loc != -1)
{
if (token.isEmpty()){
return;
}
else if (advance){
token = exp.substring(0,loc);
exp = exp.substring(loc+1);
}
char ch = token.charAt(0);//there is a specific problem with this line
if(Character.isDigit(ch)){
advance = true;
s1R.push(token);
}
else
{
if(s2R.isEmpty())
{
advance = true;
s2R.push(token);
}
else
{
advance = false;
calcR();
}
}
if(advance){
loc = exp.indexOf(" ");
}
}//end of while
if (Character.isDigit(exp.charAt(0)))
{
s1R.push(exp);
}
else
{
s2R.push(exp);
}
while (!s2R.isEmpty())
{
calcR();
}
}
Любая помощь будет высоко ценится. Я действительно потерялся здесь. Спасибо.
Добавить полный стек Следите за своим сообщением. –