Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 如何修复名称排序器?NoSuchElementFound错误。。。?_Java_Sorting_Debugging - Fatal编程技术网

Java 如何修复名称排序器?NoSuchElementFound错误。。。?

Java 如何修复名称排序器?NoSuchElementFound错误。。。?,java,sorting,debugging,Java,Sorting,Debugging,我写了一个名字排序程序,用来对名字列表(duh)进行排序,并给出我名字的索引值。出于某种原因,它编译得很好,但表示'maleNames[i]=nameScan.nextLine()有问题;“并返回此消息: java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1540) at NameSorter.main(NameSorter.java:14) 有什

我写了一个名字排序程序,用来对名字列表(duh)进行排序,并给出我名字的索引值。出于某种原因,它编译得很好,但表示'maleNames[i]=nameScan.nextLine()有问题;“并返回此消息:

java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1540)
    at NameSorter.main(NameSorter.java:14)
有什么想法或解决方法吗?提前谢谢

import java.io.*;
import java.util.Scanner;
public class NameSorter
{
    public static void main(String [] args) throws FileNotFoundException
    {
        String [] maleNames = new String[1220];
        PrintStream ps = new PrintStream("sorted_male_names.txt");

        Scanner nameScan = new Scanner(new File("common_male_names.txt"));

        for (int i = 0; i < maleNames.length; i++)
        {
            maleNames[i] = nameScan.nextLine();
        }

        bubbleSort(maleNames);

        for (int i = 0; i < maleNames.length; i++)
        {
            System.out.println(maleNames[i]);
        }

        for (int i = 0; i < maleNames.length; i++)
        {
            String currentName = maleNames[i];
            ps.println(currentName);
        }

        System.out.println(linearSearch(maleNames, "zander"));
    }

    public static boolean isSorted(String[] arr)
    {
        for (int i = 0; i < arr.length -1; i++)
        {
            if (arr[i].compareTo(arr[i+1]) > 0)
                return false;
            }
        return true;
    }

    public static void swapElements(String[] arr, int index1, int index2)
    {
        String tempValue = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = tempValue;
    }

    public static void bubbleSort(String[] arr)
    {
        while(isSorted(arr) == false) // while(!isSorted(arr)) 
        {
        for (int i = 0; i < arr.length - 1; i++)
        {
            if (arr[i].compareTo(arr[i+1]) > 0)
            swapElements(arr, i, i+1);
        }
        }
    }

    public static int linearSearch(String[] arr, String name)
    {
        for (int i = 0; i > arr.length; i++)
        {
            if (arr[i].equals(name))
            return i;
        }
        return -1;
    }

    public static void printArray(int[] arr)
    {
        for (int i = 0; i < arr.length; i++)
        {
            System.out.print(arr[i] + " ");
        }
    }
}
import java.io.*;
导入java.util.Scanner;
公共类名称排序器
{
公共静态void main(字符串[]args)引发FileNotFoundException
{
字符串[]maleNames=新字符串[1220];
PrintStream ps=新的PrintStream(“sorted_male_names.txt”);
Scanner nameScan=new Scanner(新文件(“common_-male_-names.txt”);
for(int i=0;i0
返回false;
}
返回true;
}
公共静态无效交换(字符串[]arr,int index1,int index2)
{
字符串tempValue=arr[index1];
arr[index1]=arr[index2];
arr[index2]=临时值;
}
公共静态void bubbleSort(字符串[]arr)
{
while(isSorted(arr)==false)//while(!isSorted(arr))
{
对于(int i=0;i0
Swaplements(arr、i、i+1);
}
}
}
公共静态整型线性搜索(字符串[]arr,字符串名称)
{
对于(int i=0;i>arr.length;i++)
{
if(arr[i].equals(name))
返回i;
}
返回-1;
}
公共静态void打印数组(int[]arr)
{
对于(int i=0;i
您的for循环

for (int i = 0; i < maleNames.length; i++) {
        maleNames[i] = nameScan.nextLine();
}

这将允许任何长度的名称文件,只要其格式正确,并避免您的异常。

您可以发布您的公共_-male_-names.txt文件内容吗?我不允许,因为它太大。它基本上是一个无序名称的长列表。它们是以水平方式列出的吗?您能发布最后几行吗?这里有一些,每个lin一个名称e:bernard mario leroy francisco marcus micheal theodore clifford miguel oscar jay jim tom calvin alex jon ronnie bill lloyd tommy leon derek warren darrell jerome floyd leo alvin tim wesley gordon dean greg jorge dustin pedro derrick dan lewis Zacharya如果op想阅读更多内容,请添加此链接
List<String> maleNames = new ArrayList<>();

while(nameScan.hasNextLine()) { 
    maleNames.add(nameScan.nextLine());
}