[解決済み] java.lang.StringIndexOutOfBoundsExceptionエラー[重複]を取得する。
2022-02-04 15:28:08
質問
簡単な暗号プログラムを作っているときに、このエラーに遭遇しました。
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(Unknown Source)
at Caesar.main(Caesar.java:27)
さて、私は何が原因であるかについてかなり明確ではない。私はここにいくつかのベテランの助けを必要とする @@以下は私のコードです。
import java.util.Scanner;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
public class Caesar {
public static void main(String[] args){
String from = "abcdefghijklmnopqrstuvwxyz";
String to = "feathrzyxwvusqponmlkjigdcb";
Scanner console = new Scanner(System.in);
System.out.print("Input file: ");
String inputFileName = console.next();
System.out.print("Output file: ");
String outputFileName = console.next();
try{
FileReader reader = new FileReader("C:/"+inputFileName+".txt");
Scanner in = new Scanner(reader);
PrintWriter out = new PrintWriter("C:/"+outputFileName+".txt");
while (in.hasNextLine()){
String line = in.nextLine();
String outPutText = "";
for (int i = 0; i < line.length(); i++){
char c = to.charAt(from.indexOf(line.charAt(i)));
outPutText += c;
}
System.out.println("Plaintext: " + line);
System.out.println("Ciphertext: " + outPutText);
out.println(outPutText);
}
System.out.println("Processing file complete");
out.close();
}
catch (IOException exception){
System.out.println("Error processing file:" + exception);
}
}
}
解決方法は?
これは
for loop
: -
char c = to.charAt(from.indexOf(line.charAt(i)));
ここで
indexOf
を返します。
-1
を指定した場合
char
が見つからない場合は
from
という文字列を投げ、その後に
StringIndexOutOfBoundsException
.
文字を取得する前に次のようなチェックを追加することができます。
int index = from.indexOf(line.charAt(i));
if (index >= 0) {
char c = to.charAt(index);
outPutText += c;
}
または -
char ch = line.charAt(i);
if (from.contains(ch)) {
char c = to.charAt(from.indexOf(ch));
outPutText += c;
}
関連
-
[解決済み] if / for / while 内で "Missing return statement" が発生する。
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】CreateProcess error=2, The system cannot find file specified.
-
[解決済み] エラー java.lang.OutOfMemoryError: GCオーバーヘッドの制限を超えました
-
[解決済み] JavaでNoClassDefFoundErrorが発生するのはなぜですか?
-
[解決済み] JavaでファイルのMD5チェックサムを取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】Javaの".class期待値"
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Javaの部分文字列:「文字列のインデックスが範囲外」。
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み] StringIndexOutOfBoundsExceptionとは何ですか?どうすれば直せますか?