2015-09-30 38 views
1

我剛開始學習Java,我試圖從我創建的文本文件中讀取名稱。然後,我希望程序向用戶詢問名稱,然後檢查名稱是否在該列表中。但是,我在處理數組時遇到問題,所以首先我只想讀取名稱,然後將它們存儲在數組中。這是我迄今爲止所做的。通過從文件中讀取創建一個java數組

import java.util.Scanner; 
import java.io.File; 
import java.io.FileNotFoundException; 


public class readnames 
{ 
     public static void main(String[] args) throws FileNotFoundException 
     { 
      File file=new File("names.txt"); 
      Scanner my_input = new Scanner(file); 
      int i=0; 

      String[] names = new String[20] ; 

      while(my_input.hasNext() && !names.equals("-1")) 
      { 
       names[i]=my_input.nextLine(); 
       i++; 
      } 

      my_input.close(); 
      System.out.println(names[i]); 
     } 
} 
+0

'while(my_input.hasNext()&&!names.equals(「 - 1」))'? – Satya

+0

我的文檔的最後一行包含-1。所以我希望它讀取名稱,直到它遇到-1。 – madlin

+0

查看'names'是一個數組。 – Satya

回答

0
public static void main(String[] args) throws FileNotFoundException { 
      File file = new File("names.txt"); 
      Scanner my_input = new Scanner(file); 

      ArrayList<String> names = new ArrayList<>(); 

      while (my_input.hasNext()) { 
       String t =my_input.nextLine(); 
       if(!t.equals("-1")) 
       names.add(t); 

      } 


      System.out.println("Enter name"); 
      String nameToCheck = my_input.nextLine(); 
      if (names.contains(nameToCheck)) { 
       System.out.println("Found"); 
      } 
      my_input.close(); 
     } 

我建議你使用ArrayList <>,因爲文件可能包含超過20名

與正常陣列

public static void main(String[] args) throws FileNotFoundException { 
     File file = new File("names.txt"); 
     Scanner my_input = new Scanner(file); 

     String[] names = new String[20]; 
     int i = 0; 
     while (my_input.hasNext()) { 
      String t = my_input.nextLine(); 
      if(!t.equals("-1")) 
      names[i++] = t; 
     } 


     System.out.println("Enter name"); 
     String nameToCheck = my_input.nextLine(); 
     for (String temp : names) { 
      if (temp.equals(nameToCheck)) { 
       System.out.println("FOund"); 
      } 
     } 
     my_input.close(); 
    } 
0

!names.equals("-1")總是true,如names是一個數組。雖然沒有使用ArrayList(動態大小的數組),這裏是一個快速的解決辦法:

public class ReadNames { 
    public static void main(String[] args) throws Throwable { 
     File file = new File("names.txt"); 
     Scanner my_input = new Scanner(file); 
     int i = 0; 
     // FIXME the file you're reading may exceed 20 lines, use ``ArrayList`` instead 
     String[] names = new String[20]; 
     while(my_input.hasNext()) { 
      String line = my_input.nextLine(); 
      if(line.equals("-1")) { 
       // end reading prematurely 
       break; 
      } 
      names[i] = line; 
      i++; 
     } 
     my_input.close(); 
     // print entire array 
     System.out.println(Arrays.toString(names)); 
    } 
} 
0

你增加循環內的變量i。 如果您可以顯示姓氏,則可以先將該變量減至 name[i]

相關問題