Java错误:java.lang.ArrayIndexOutOfBoundsException:1
我正在制作一个简单的程序,它会在单词ex中间加上一个带“*”的单词:“Some * ing”,并且会用另一个字符串来替换它第一个词中的“*”。像“th” - >输出“Something”。Java错误:java.lang.ArrayIndexOutOfBoundsException:1
样品试验1:
输入第一个字符串:
d * G
输入替换字符串:
在
丁
够简单。我在IDEA(运行Java 8)中创建了这个程序,它工作正常(尽管我仍然需要添加一些小东西)。 但在CodeRunner中,我遇到了一些问题。它说“java.lang.ArrayIndexOutOfBoundsException:1”。我的代码有一些错误,我不知道它在哪里。 我的代码:
import java.util.Scanner;
import java.lang.Math;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter the first String:");
//The inital String
String first = scan.nextLine();
System.out.println("Enter the replacement String:");
// SubString
String subs = scan.nextLine();
if (!(first.contains("!") || first.contains("@") || first.contains("#") || first.contains("$") || first.contains("%") || first.contains("^") || first.contains("&") || first.contains("(") || first.contains(")") || first.contains("+") || first.contains("-") || first.contains("_") || first.contains("~") || first.contains("`") || first.contains("\\") || first.contains("[") || first.contains("]") || first.contains("{") || first.contains("}") || first.contains(":") || first.contains(";") || first.contains("'") || first.contains("\"") || first.contains("/") || first.contains("?") || first.contains(".") || first.contains(">") || first.contains(",") || first.contains("<"))) {
if (first.contains("*")) {
String parts[] = first.split("\\*");
String part1 = parts[0];
String part2 = parts[1];
String newString = part1 + subs + part2;
System.out.println(newString);
} else {
System.out.println("Error: no *");
}
} else {
System.out.println("Error: Incorrect characters");
}
}
}
的CodeRunner给我,
Runtime Error
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Main.main(Main.java:298)
at Ideone.assertRegex(Main.java:125)
at Ideone.test(Main.java:61)
at Ideone.main(Main.java:28)
虽然代码工作在我的IDE,我们假定它是能够使这样的代码将在codeRunner
工作谢谢
注意:StringBuilder仅用于演示
if (YOURSTRING.contains("*")) {
StringBuilder builder=new StringBuilder();
String parts[] = YOURSTRING.split("\\*");
for (int i = 0; i < parts.length; i++) {
builder.append(parts[i]);
}
System.out.println(builder.toString());
} else {
System.out.println("Error: no *");
}
for循环,而不是从阵列 获得价值静态使用,因为如果吐会做1次的非那么这行 String part1 = parts[0]; String part2 = parts[1];
回报ArrayIndexOutOfBoundsException异常,因为没有第二个元素int数组得到它,明白了吗?
getText()方法...它不起作用。我很新的Java,所以我可能会问一些莱默的问题,但噢好 – user3687547
男人它只是演示,我是不是在Android –
唐我认为你没有注意到逻辑,而不是代码 –
谢谢大家谁帮助我!我在解决这个任务的过程中学到了10种新的方法,直到找到解决方案。这是一个有益的经验。这个任务完成了,我得到了一个(100%)!感谢你们!
import java.util.Scanner;
public class AsmntFive {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Enter the first String:");
String first = scan.nextLine();
System.out.println("Enter the replacement String:");
String subs = scan.nextLine();
if (!(first.contains("!") || first.contains("@") || first.contains("#") || first.contains("$") || first.contains("%") || first.contains("^") || first.contains("&") || first.contains("(") || first.contains(")") || first.contains("+") || first.contains("-") || first.contains("_") || first.contains("~") || first.contains("`") || first.contains("\\") || first.contains("[") || first.contains("]") || first.contains("{") || first.contains("}") || first.contains(":") || first.contains(";") || first.contains("'") || first.contains("\"") || first.contains("/") || first.contains("?") || first.contains(".") || first.contains(">") || first.contains(",") || first.contains("<"))) {
if (first.contains("*")) {
System.out.println(first.replace("*", subs));
} else {
System.out.println("Error: no *");
}
} else {
System.out.println("Error: Incorrect characters");
}
}
}
阅读例外。根据它告诉你的内容进行调试。在Main.java的第298行,当它不存在时,你正在访问'something [1]'。 – John3136
看起来像'String parts [] = first.split(“\\ *”);'没有达到您期望的效果。它会分割字符'\'和'*'。没有正则表达式的行动在那里。查看File类,看它是否提供了一些有用的方法(提示:它的确如此)。此外,屏幕您的代码不适当的语言。 –
浏览你的循环并学习它们在运行时如何工作 –