Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而循环只运行一次?_Java_File_Loops_File Io_While Loop - Fatal编程技术网

Java 而循环只运行一次?

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++)

拆分功能不起作用。对于最后一个print语句,它给了我一个
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]);
        }
      }