私はJavaで奇妙な問題を抱えています。中置数式を評価し、最終結果を画面に返す数式計算機を作成しようとしています。私はタスクを達成するためにスタックを使用してきました。これまで、ハードコーディングされた文字列を入力に使用していましたが、同じ目的でコマンド ライン引数に変更しました。私の問題は、データ型と文字列がまったく同じであるにもかかわらず、使用しているスタックがコマンドライン入力から値をプッシュしないことです。
データをスタックにプッシュするコードは次のとおりです。
public class Expression
{
public static void main(String argv[]){
Stack<String> operator = new Stack<String>();
Stack<String> operand = new Stack<String>();
/*
String push[] = new String[argv.length];
for (int i = 0; i<push.length; i++){
push[i] = argv[i];
}
*/
for(int i = 0; i<argv.length; i++){
if(argv[i] == "+" || argv[i] == "-" || argv[i] == "*"
|| argv[i] == "/" || argv[i] == "^") {
operator.push(argv[i]);
} else if(argv[i] == "0" || argv[i] == "1" || argv[i] == "2"
|| argv[i] == "3" || argv[i] == "4" || argv[i] == "5"
|| argv[i] == "6" || argv[i] == "7" || argv[i] == "8"
|| argv[i] == "9") {
operand.push(argv[i]);
}
}
System.out.println(operand);
System.out.println(operator);
Stack<String> result = evaluateStack(operand, operator);
System.out.println(result.toString());
}
}
ハードコードされた文字列を使用してデバッガーを使用すると、スタックが正常にいっぱいになったことが示されていましたが、コマンドライン引数を使用すると、for ループが完了しても、常に 0 要素のスタックが表示されます。私は何を間違っていますか?