本文介绍了得到java.lang.StringIndexOutOfBoundsException错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
而我在做一个简单的密码程序。我遇到了这个错误
while i am doing a simple cipher program. i was encounter this error
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)
好吧,我不清楚原因是什么。我需要一些资深人士的帮助,@ @下面是我的代码。
well, i am not quite clear on what is the cause. i require some help from some veteran here @@ below are my code.
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循环中的作业
: -
char c = to.charAt(from.indexOf(line.charAt(i)));
此处, indexOf
返回 -1
当在中找不到
字符串开始,然后它将抛出 char
时,从 StringIndexOutOfBoundsException
。
Here, in indexOf
returns -1
when the char
is not found in from
string, and then it will throw an StringIndexOutOfBoundsException
.
您可以在获取字符之前添加一个检查: -
You can add a check before fetching the character: -
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;
}
这篇关于得到java.lang.StringIndexOutOfBoundsException错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!