このエラーで他のそのような回答を調べましたが、私のコードを具体的に把握できないようです。私は、Javaを使用しています、と私は、入力として番号を入力してプログラムを作成しようとしていますし、出力として私が取得する必要があります。variable.charAt()を使用して数値を並べ替える。スレッド "main"の例外java.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です:
example input: 1234
The original number is 1234
The number in reverse is 4 3 2 1
私はこのコードが書かれている:
import java.util.Scanner; //Needed for Scanner class
public class CoeQuiz3
{
public static void main(String[] args)
{
//establish variables
String ogNumber;
int ogNumberInt;
Scanner keyboard = new Scanner(System.in); //establish scanner
System.out.println("Enter a positive integer greater than 0.");
ogNumber = keyboard.nextLine();
ogNumber = checknumber(ogNumber);
ogNumberInt = Integer.parseInt(ogNumber);
//print the original number
System.out.println("The original number is " + ogNumber);
//print the reverse number
int ogNumberLength = ogNumber.length();
int digitposition, ogDigit;
String reverseStatement = "The number reversed is ";
for (digitposition = ogNumberLength; digitposition >= 0;
digitposition--)
{
ogDigit = ogNumber.charAt(digitposition);
reverseStatement += ogDigit + " ";
}
System.out.println(reverseStatement);
コンパイルして実行しますが、エラーが発生するたびに:
The original number is 1234 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4 at java.lang.String.charAt(String.java:658) at CoeQuiz3.main(CoeQuiz3.java:30)
論理的には問題はありますか?この問題は、>=
を>
に置き換えた場合でも発生します。
これは古典的な[off-by-oneエラー](https://en.wikipedia.org/wiki/Off-by-one_error)であり、ほぼ確実に重複しています。 –
また、デバッガでコードをステップ実行することは、ここに投稿する前に最初に実行する必要があります。あなたは、あなたのコードが何をしているかについて多くのことを確かに学び、99%の確実性であなた自身の問題を解決するでしょう。 –