Java 而循环只运行一次?
拆分功能不起作用。对于最后一个print语句,它给了我一个Java 而循环只运行一次?,java,file,loops,file-io,while-loop,Java,File,Loops,File Io,While Loop,拆分功能不起作用。对于最后一个print语句,它给了我一个arrayoutofbound错误。有什么帮助吗 while (inFile.hasNext()) { String clean = inFile.nextLine(); String[] nm = clean.split(","); for (int i = 0; i < nm.length; i++)
arrayoutofbound
错误。有什么帮助吗
while (inFile.hasNext())
{
String clean = inFile.nextLine();
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
System.out.print("at index"+2+"Strin"+nm[3]);
}
输出:
at index 0 string is input1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at filereader.FileReader.main(FileReader.java:33)
Java Result: 1
代码对我来说似乎是合适的,它不应该像这样失败。我能看到的唯一原因是输入文件中是否有一个空行,在这种情况下,
System.out.print(“在索引”+2+“Strin”+nm[3])
将在nm[3]处返回ArrayOutOfBoundException
或者,您可以这样编写代码:
while (inFile.hasNext())
{
String clean = inFile.nextLine();
if(clean != null && clean != ""){
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
System.out.print("at index"+2+"Strin"+nm[3]);
}
}
while(infle.hasNext())
{
String clean=infle.nextLine();
if(clean!=null&&clean!=“”){
字符串[]nm=clean.split(“,”);
对于(int i=0;i
希望这能起作用。这会给您带来错误:
System.out.print("at index"+2+"Strin"+nm[3]);
这是因为你要么有一个空行,要么有一行少于4个逗号分隔的项目。试试这个:
System.out.print("at index"+2+"Strin"+nm[nm.length-1]);
可能阵列nm在第行没有4个元素
System.out.print("at index"+2+"Strin"+nm[3]);
在打印第4个元素之前,请检查数组是否至少包含4个元素
// create a new scanner with the specified String Object
Scanner inFile = new Scanner(s);
while (inFile.hasNext())
{
String clean = inFile.nextLine();
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
if (nm.length > 3) {
System.out.print("at index"+2+"Strin"+nm[3]);
}
}
//使用指定的字符串对象创建新的扫描仪
扫描仪填充=新扫描仪;
while(infle.hasNext())
{
String clean=infle.nextLine();
字符串[]nm=clean.split(“,”);
对于(int i=0;i3){
系统输出打印(“索引”+2+“条纹”+nm[3]);
}
}
使用BufferReader
的readLine()
运行它时,我没有收到异常。请尝试添加System.out.println(Arrays.toString(nm))
以查看数组中的内容。如果该输出不能使您的问题变得清晰,则编辑您的问题并添加输出。也许这会让我们知道还需要寻找什么。@ajb它只打印每行的第一行。我用输出编辑了代码。您是否重新编译了代码?仍然不起作用。我不知道为什么。文件位置错误。谢谢你!
// create a new scanner with the specified String Object
Scanner inFile = new Scanner(s);
while (inFile.hasNext())
{
String clean = inFile.nextLine();
String[] nm = clean.split(",");
for (int i = 0; i < nm.length; i++)
{
System.out.println("at index "+ i +" string is "+nm[i]);
}
if (nm.length > 3) {
System.out.print("at index"+2+"Strin"+nm[3]);
}
}