2012-05-02 39 views
1

我正在嘗試創建一個包含約100個名稱的數組。我想要的名稱是我選擇的不是隨機生成的名稱。所以Array的每個位置都會包含一個名稱的字符串。有沒有比Array[1] = "name; Array[2] = "name";更簡單的方法?我想的方式是使用for循環從數據文件或文本文件中獲取信息,但我不知道如何做到這一點。什麼是完成這項任務的最簡單的方法?有沒有一種簡單的方法可以將項目列表輸入到數組中,比如50-100?

+1

有很多教程可以從Java文件加載數據;你有沒有試過這些? –

+0

是的,但我猜對我來說是令人困惑的部分是文件位置,它總是出錯,但我想通了。我如何使用這個並使數組成爲實例變量?我爲它做了一個方法,但我不能在方法 – Renuz

回答

5

如果你必須符合一個名稱的文件:

public static String[] getArrayStringRandom() { 
    try { 
     List<String> list = new LinkedList<String>(); 
     FileReader fileReader = new FileReader("file.txt"); 
     BufferedReader in = new BufferedReader(fileReader); 
     for (String name; (name = in.readLine()) != null;) { 
      list.add(name); 
     } 
     in.close(); 
     fileReader.close(); 
     // Collections.shuffle(list); // Random permutes 
     return list.toArray(new String[0]); 
    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 
} 
+0

中聲明它是私有的,我可以在Main方法中使用它,但是如何使用它來創建實例變量。我試圖寫在這個文件中,並使用數組作爲實例變量private String [] name;這在主要方法中執行它,有沒有辦法在類中創建它並將其用作變量? – Renuz

+0

你可以創建一個靜態方法來返回一個數組,像'public static String [] getArrayString(){...}'。或者你可以創建一個靜態變量,並將文件讀入*靜態初始化塊*'static {...}'。請參閱http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html中的更多內容 –

+0

好吧,我明白了,現在如果我想訪問所述字符串中的特定編號數組,那麼如果我想要執行某些操作像這樣 variable = getArrayString();這就是我被允許做的事情,我想要做variable = getArrayString()。randomize,或者甚至在array [1]處挑選String,這可能來自你建議的getArrayString()靜態方法嗎? – Renuz

2

可以使用一個array initializer

數組初始化可在聲明中指定,或作爲陣列創建表達式的一部分,以建立一個數組,並提供一些初始值。它寫成逗號分隔的表達式列表,用大括號{}括起來。

Array = new String[] {"name1", "name2", ..., "name100"}; 
0

也許就是這樣。從文本文件中讀取也可以工作,但需要更多的努力,儘管它會更具動態性。

String[] myArray = {"Jon","Mike","Dave","Ed","Ted","Shirly","Jane","Robert"};//etc 
0

好吧,如果你已經有了一個文本文件,然後再解析一個txt文件和填充陣列是一種有效的選擇中列出了所有名稱。

Here is everything you will need to accomplish it.

然而,如果你還沒有進行數字上市(又名如果你有他們寫在一張紙上),你知道他們不會再只是手動更改它們添加的所有名稱碼。

但這樣做的缺點是,如果您需要更新名稱列表,則更容易處理txt文件而不是硬代碼。

0

如果您需要填充硬編碼值的陣列,你可以只使用

String stringArray = new String[]{ "Name1", "Name2", ... }; 

如果你想從文件中檢索你的建議,你可以使用類似的循環來

String stringArray = new String[100]; 
for(int i = 0; i < stringArray.length; i++){ 
    stringArray[i]=retrieveNextValueFromFile(); 
} 
0

初始化數組最簡單的方法是:

String[] array = { "a", "b", "c", "d", "e" }; 

...但如果你打算從文件中讀取的名字,你就會有一個存儲它由一個:

List<String> list = new ArrayList<String>(); 
// ... read each name from the file 
list.add(name); 
// finally, convert the list to a String[] 
String[] array = list.toArray(new String[list.size()]); 
0

如果這只是一個測試家庭作業分配,您可以使用<命令行工具來傳遞文件和標準掃描儀。例如

import java.util.Scanner; 

public class Example { 
    public static void main(String[] args){ 
    Scanner cin = new Scanner(System.in); 
    String[] stringArray = new String[100]; 

    for(int i = 0; i < 100; i++) 
     stringArray[i] = Scanner.nextLine(); 
    } 
} 

現在,如果你有一個文件(FILENAME.TXT),其中包含每行的名稱,從cprompt調用該程序: java Example < filename.txt

這是很好的測試...

相關問題