2015-09-30 3 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

Вы приращение переменного я внутри цикла. Если вы можете показать фамилию, вы можете уменьшить ее до name[i].

Смежные вопросы