問題コードは以下の通りです。メインメソッド全体が必要な場合は、私にお尋ねください。コードは適合しますが、期待通りに実行されません。私は、数値が範囲外であるか、ソーステキストの最後の位置(ユーザが入力する文字列)よりも大きい場合は、感嘆符を返すようにしています。長さはあらかじめ定義することはできません。例外は 'StringIndexOutOfBoundsException'です。文字列インデックスが範囲外になった場合、if else文
TDLR numはint、sourcetextは文字列、どちらも入力です。例外:コードが '!'を出力するべきとき。代わりに。
import java.util.Scanner;
public class Temp {
public static void main(String[] args) {
Scanner sc;
int result, num= 0, end = -2, temp, infolost, count;
String word, sourcetext, answer, space= " ";
String sourcetext2, temp2;
char input, result2, chalost;
sc = new Scanner(System.in);
System.out.println("please enter sourcetext");
sourcetext = sc.nextLine(); // user inputs source text
sourcetext = sourcetext.toLowerCase(); // converts sourcetext into lowercase
System.out.print("Would you like to 1 encrypt, or 2 decrypt?");
answer = sc.next(); // user inputs choice
if (answer.equals("1")||(answer.equals("encrypt"))) {
System.out.println("Please enter at least one word to encrypt");
word = sc.next(); // user inputs one word
for (int i= 0; i < word.length(); i++) {
temp = sourcetext.indexOf(word.charAt(i)); // uses index to convert char positions int num
System.out.print(space + temp + space);
}
System.out.print(space + end);
}
else if (answer.equals("2")||(answer.equals("decrypt"))) {
System.out.println("Please enter digits, with one space between each. End with -2");
while (num > -2) {
num = sc.nextInt(); // num to decrypt
if (num > -2) {
result2 = sourcetext.charAt(num); // num converted into characters
System.out.print(result2);
} else if (num > sourcetext.length()) {
System.out.print("!");
} else if (num<0) {
System.out.print("end");
}
}
}
}
}
完了コード 'StringIndexOutOfBoundsException'は、文字列の範囲にないインデックスにアクセスしようとすると発生します。 –
完全なコードを提供する必要があります。おそらくスタックトレースが必要です。 – Areca
あなたのコードをデバッグするのではなく、スタックトレースを解釈してデバッガを使う方法を学ぶ必要があります。 – Raedwald