2014-03-05 154 views
1

我需要让我的程序读取一个文件,然后获取字符串中的数字并将它们排序为数组。我可以让我的程序读取文件并将其放到一个字符串中,但这就是我卡住的地方。所有数字都在文件的不同行上,但在字符串中显示为一个长整数。这是我到目前为止有:从文件中获取数字并对它们进行排序

public static void main(String[] args) { 

    String ipt1; 
    Scanner fileInput; 
    File inFile = new File("input1.dat"); 

    try { 
     fileInput = new Scanner(inFile); 
     //Reads file contents 
     while (fileInput.hasNext()) { 
      ipt1 = fileInput.next(); 
      System.out.print(ipt1); 
     } 
     fileInput.close(); 
    } 
    catch (FileNotFoundException e) { 
     System.out.println(e); 
    } 
} 
+0

那么什么是你的问题? – Idris

+0

@Srink我如何读取文件并将每行放入数组元素中? – user2848462

回答

0

如果您的任务只是从某个文件获取输入,并且您确定文件具有整数,请使用ArrayList。

Scanner fileInput; 
ArrayList<Double>ipt1 = new ArrayList<Double>(); 
File inFile = new File("input1.dat"); 

try { 
    fileInput = new Scanner(inFile); 
    //Reads file contents 
while (fileInput.hasNext()){ 
    ipt1.add(fileInput.nextDouble()); //Adds the next Double to the ArrayList 
    System.out.print(ipt1.get(ipt1.size()-1)); //Prints out what you just got. 
} 
fileInput.close(); 

} 
catch (FileNotFoundException e){ 
    System.out.println(e); 
} 

//Sorting time 
//This uses the built-in Array sorting. 
Arrays.sort(ipt1); 

但是,如果你确实需要拿出在最后一个简单的数组,但可以使用的ArrayList,您可以添加以下内容:

Double actualResult[] = new Double[ipt1.size()]; //Declare array 
for(int i = 0; i < ipt1.size(); ++i){ 
    actualResult[i] = ipt1.get(i); 
} 
+0

即时得到的误差:异常在线程“主要” java.lang.Error的:未解决编译问题: \t的方法排序(INT [])中的类型数组是不适用的参数(ArrayList的) \t类型不匹配:不能从double转换为int \t ArrayList 类型中的方法get(int)不适用于参数(双数) – user2848462

+0

数据类型实际上是双倍数据类型,所以我进入并更改了它,这可能是什么影响它? – user2848462

+0

如果您输入双打,您需要修改代码中的一些内容。我将编辑更改。 – SWPhantom

2

我建议使用fileInput.nextInt()或者你想让他们,使他们在一个数组,并使用内置的有点像数组任何类型的阅读作为数字类型的值。分类。除非我错过了关于这个问题的更微妙的一点。

+0

输入列表的大小可能未知。如果是这种情况,请使用ArrayList。 – SWPhantom

+0

有效。我没有想过这个特别的呃逆。 – Irisshpunk

+0

啊,好吧,阅读他们作为数字类型帮助我解决了我的第一个问题,但现在我如何创建每行的值,因为列表长度不一(多个文件将在此程序中测试) – user2848462

相关问题