所以基本上,我有一个考试问题说"将你的目录添加到这个方法"后续问题要求我使用这种方法。我的同学拥有mac,与审查员一起出于某种原因设法让文件正常工作。
public static String GetTextFromFile(int startPosition, int endPosition) {
String gotText = "";
String outText = "";
try {
Scanner fileInp = new Scanner(new File(
"C:/Users/Ted/Desktop/diary.txt"));
while (fileInp.hasNextLine()) {
gotText = gotText + fileInp.nextLine();
gotText = gotText + "\n";
}
// System.out.println(gotText);
for (int i = startPosition; i <= endPosition; i = i + 1) {
outText = outText + gotText.charAt(i - 1);
}
fileInp.close();
return outText;
} catch (IOException e) {
return outText;
}
}
我使用的是Windows,为什么这对我不起作用? 这是输入的错误 起点1和终点9
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at java.lang.String.charAt(String.java:658)
at secretmessages.SecretMessages.GetTextFromFile(SecretMessages.java:78)
at secretmessages.SecretMessages.EveryNthCharacterSteganography(SecretMessages.java:199)
at secretmessages.SecretMessages.main(SecretMessages.java:322)
答案 0 :(得分:0)
如果您未收到任何文字,那么gotText
仍为""
,请更改此行
for(int i = startPosition; i <= endPosition; i = i + 1)
到
for(int i = startPosition; i <= endPosition && gotText.length () > 0; i = i + 1)
另外我宁愿使用String.substring
同时记录您的例外情况
catch(IOException e)
{
e.printStackTrace ();
return outText;
}
答案 1 :(得分:0)
代码中的问题是您没有检查空字符串并使用SrtingBuilder而不是String.check endPosition值。 endPosition值不能大于string的总长度。 请参阅以下代码可能会解决您的问题。
StringBuilder sb = new StringBuilder(&#34;&#34;); while(fileInp.hasNextLine()){ 。sb.append(fileInp.nextLine())附加(&#34; \ n&#34);
} String gotText=sb.toString(); // System.out.println(gotText); for (int i = startPosition; i <= endPosition; i = i + 1) { outText = outText + gotText.charAt(i - 1); } if(!gotText.equals("")){ if(endPosition > gotText.length()) endPosition=gotText.length()-1; for (int i = startPosition; i <= endPosition; i = i + 1) { outText = outText + gotText.charAt(i - 1); } }
答案 2 :(得分:0)
outText = outText + gotText.charAt(i - 1);
我想在这里,如果在开头i==0
,那么i-1
将抛出超出范围的异常。并检查endPosition
它不应超出gotText.length()
。