私は単純な置換アプリを持っています。ユーザーは部分文字列に分割された文字列を入力し、各文字が数字に置き換えられます。
私が抱えている問題は、置換の最後のセットのみが処理されるか、少なくとも最初の 2 つが機能している場合、それらは null になり、「0」を返すことです。
したがって、「abc」の入力には「123」の出力が必要ですが、「003」が得られます。または、入力が「bcd」の場合、出力は「234」のはずですが、「004」が得られます。
どこが間違っていますか?
JButton button_1 = new JButton("Substitute");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String str = textField_1.getText();
String str0 = str.substring(0);
int val1 = 0;
if (str0.equalsIgnoreCase("a")) { val1 += 1; }
if (str0.equalsIgnoreCase("b")) { val1 += 2; }
if (str0.equalsIgnoreCase("c")) { val1 += 3; }
if (str0.equalsIgnoreCase("d")) { val1 += 4; }
String str1 = str.substring(1);
int val2 = 0;
if (str1.equalsIgnoreCase("a")) { val2 += 1; }
if (str1.equalsIgnoreCase("b")) { val2 += 2; }
if (str1.equalsIgnoreCase("c")) { val2 += 3; }
if (str1.equalsIgnoreCase("d")) { val2 += 4; }
String str2 = str.substring(2);
int val3 = 0;
if (str2.equalsIgnoreCase("a")) { val3 += 1; }
if (str2.equalsIgnoreCase("b")) { val3 += 2; }
if (str2.equalsIgnoreCase("c")) { val3 += 3; }
if (str2.equalsIgnoreCase("d")) { val3 += 4; }
textField_2.setText(""+Integer.toString(val1)+(val2)+(val3));
}
});
button_1.setBounds(315, 50, 90, 25);
panel.add(button_1);