私は、適切にフォーマットされた文字列として任意のサイズの「数値」を取得するコースの課題に取り組んでいます。それぞれがすべての桁を個別の数値として取り込む 3 つのスタックを使用します。スタック 1 は最初の値を取得し、スタック 2 は 2 番目の値を取得し、スタック 3 は結果の値をプッシュして文字列にポップします。最後に、文字列が画面に出力されます。
これに関する私の問題は、「1つを運ぶ」能力です。たとえば、プログラムに7と15を追加するとします。私のプログラムは、7と5の両方をスタック1と2からそれぞれポップして、それを合計して12を取得します。これは私の問題は、1 つがまだスタック上にあることがわかり、1 つが実際には 10 の位の数字であることを認識する方法が必要なため、私の問題が始まります。
これは、メイン メソッドからコマンド ライン引数を受け取る加算メソッド全体の投稿ですが、それは本当に重要ではありません。できるだけ徹底的にしようとしています。
私が徹底的に説明し、皆さんが私の質問を理解してくれたことを願っています。この件についてさらに詳しく説明させていただきます.
private static void addlargeNumbers(String x, String y)throws ParseException{
String o = x.replaceAll(",", "");
String t = y.replaceAll(",", "");
String r = "";
Stack<Integer> one = new Stack<Integer>();
Stack<Integer> two = new Stack<Integer>();
Stack<Integer> resstack = new Stack<Integer>();
int i = 0, j = 0;
while(i < o.length()){
one.push(Character.getNumericValue(o.charAt(i)));
i++;
}
while(j < t.length()){
two.push(Character.getNumericValue(t.charAt(j)));
j++;
}
while(!one.isEmpty() || !two.isEmpty()){
if(!one.isEmpty() && !two.isEmpty()){
resstack.push(one.pop() + two.pop());
}
else if(one.isEmpty()){
resstack.push(two.pop());
}
else{
resstack.push(one.pop());
}
}
while(!resstack.isEmpty()){
r += resstack.pop();
}
if(!x.isEmpty() && !y.isEmpty()){
System.out.printf("%s + %s = %s\n", x, y, r );
}
else if(x.isEmpty()){
System.out.printf("%s = %s\n", y, r);
}
else{
System.out.printf("%s = %s\n", x, r);
}
}
私の質問は答えられました。助けてくれてありがとう。