2014-02-16 41 views
0

我有一個程序,它從一個CSV文件全民族姓氏,名字和出生年的讀取,並將它們分配到一類特殊的數組,然後被根據自己的姓氏排序。我相信我的代碼工作,所以我必須做的檢查,這是輸出列表,看看如果確實所有的人都是由他們的姓氏排序。但是,我無法找到正確的語法來執行此操作。 這裏是我的Main.java的代碼,我認爲這個問題一定是。Java:我怎麼不能從csv文件輸出我的排序值?

package project_1_sorting; 


import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 



public class Main 

{ 

    public static void main(String[] args) throws IOException { 
     // open file input stream 
     BufferedReader reader = new BufferedReader(new FileReader(
       "C:\\Users\\Owner\\Desktop\\Data 18k.csv")); // double check where this is trying to read it from 

     // read file line by line 
     String line = null; 
     Scanner scanner = null; 
     int index = 0; 
     Human[] pplArray = new Human[18000]; 
       int i = 0; 
     while ((line = reader.readLine()) != null) { 
      Human ppl = new Human(); 
      scanner = new Scanner(line); 
      scanner.useDelimiter(","); 
      while (scanner.hasNext()) { 
       String data = scanner.next(); 
       if (index == 0) 
        ppl.setLastName(data); 
       else if (index == 1) 
        ppl.setFirstName(data); 
       else if (index == 2) 
        ppl.setBirthYear(data); 
       else 
        System.out.println("invalid data::" + data); 
       index++; 
      } 
         ppl.setKey(0); //change this for later things, you can use loop 
         ppl.setOrder(0); //change this to 1 if you want to invert the list of people 
      index = 0; 
      pplArray[i] = ppl; 
         i++; 
         System.out.println(pplArray); 
     } 
     //close reader 
     reader.close(); 

     System.out.println(pplArray); // create 


      Selection_Sort selection = new Selection_Sort(); 


      for (int j = 0; j < 18000; j++) 
    { 
     System.out.println(pplArray[j]); 
    } 
    } 

} 

所以我期待這個輸出所有我的人從CSV文件中的一個巨大的列表(有序),他們所有的相同的格式信息,因爲他們原本是吧。 (每行一人,3串3列)。然而,這是我得到的:

run: 
Test 
17 
true 
0.142857 
BUILD SUCCESSFUL (total time: 0 seconds) 

我不知道這是什麼意思。它似乎在做一些與我正在嘗試做的事完全無關的事情。這是我在NetBeans中打開的唯一項目,因此它必須從我的函數生成,對嗎?如果有人知道這是什麼,請告訴我。如果這個Main.java沒有其他錯誤,我可以發佈我的其他.java文件。

有一件事我沒有注意到的是,即使我評論了我的選擇排序函數調用,以及所有在這java文件的打印行命令,顯示了我的屏幕上相同的輸出。

請讓我知道你在想什麼。

回答

0

你有幾個問題

的陳述

Selection_Sort selection = new Selection_Sort(); 
for (int i = 0; i < 18000; i++) 
{ 
    System.out.println(pplArray[i]); 
} 

應該在該方法main18k而不是類塊

然後變量i已經被使用,所以你需要使用不同的變量名要麼在那裏它使用

for (int j = 0; j < 18000; j++) 

那些地方的最後使用main代替main18k因此應用程序有一個有效的切入點

+0

謝謝,我試過了,錯誤解決了。它也是有意義的;我需要在main18k(現在簡稱爲main)函數中包含這些行,以便定義它們的參數。我運行了代碼,結果讓我有些困惑。我的代碼的輸出顯示「Test 17 true 0.142857」。我不確定這意味着什麼或來自哪裏,但這絕對不是我期待的。它應該根據他們的姓氏打印出所有人的屬性。我將編輯我在這裏發佈的代碼,以便更容易看到。 – user3274463

0

您還沒有關閉托架properly.Also變量i在主使用了兩次method.So改變變量名。

拆除支架線Selection_Sort selection = new Selection_Sort(); 改變變量之前,我對J和代碼如下:

for (int j = 0; j < 18000; j++) 
    { 
     System.out.println(pplArray[j]); 
    } 
相關問題