2015-08-30 2 views
0

Привет, ребята, пожалуйста, кто-нибудь может помочь мне с этой программой?Поиск и совпадение в Txt-файле (Java)

написать программу, которая просит пользователя ввести почтовый индекс и возвращает город для этого почтовый индекс. Если почтовый индекс отсутствует в списке, тогда он должен вернуть город, который не найден. Находка код города должен быть в отдельном методе findCity() Пользователь должен иметь возможность продолжить ввод почтовых индексов, пока они не войдут 9999, чтобы указать, что они являются полными (9999 не должны выглядеть как «город не найден»)

====================================== в файл TXT:

Dandenong 3175 Frankstone 3199 Бервик 3816 Cranbourne 3977 Rosebud 3939


Это то, что я сделал до сих пор.

import java.io.File; 

импорт java.io.FileNotFoundException; импорт java.util.Scanner;

public class test2 { 

    public static void main(String[] args) throws FileNotFoundException 
    { 
     try 
     { 
      File f = new File("Files\\cities.txt"); 
      Scanner input = new Scanner(f); 
      String text; 
      while(input.hasNextLine()) 
      { 
       text = input.nextLine(); 
       process(text); 
      } 


     } 
     catch (FileNotFoundException ex) 
     { 
      System.out.println(ex.getMessage()); 
     } 
    } 

    public static void process(String text) 
    { String name = null; 
    int id; 
     Scanner code = new Scanner(System.in); 
     System.out.println("enter the postcode");  
     id = code.nextInt(); 
     Scanner data = new Scanner(text); 

     if(code.equals(0))System.out.println(name); 

     name = data.next(); 
     id = data.nextInt(); 

     while(data.hasNextDouble()) 
     { 

     } 
    System.out.println(name+ " "); 
// System.out.println(id+ " "); 
    } 
} 
+1

какая помощь вам нужна? где вы застряли? код кажется неполным –

+0

вы используете ту же переменную ('id'), чтобы получить ввод пользователя, а затем получить данные сканера –

ответ

0
 File f = new File("d:\\cities.txt"); 
     Scanner input = new Scanner(f); 
     Map<Integer,String> cityCode = new HashMap<Integer,String>(); 

     String text; 
     while(input.hasNextLine()) 
     { 
      text = input.nextLine(); 
      Scanner data = new Scanner(text); 
      String name = data.next(); 
      int id2 = data.nextInt(); 
      cityCode.put(id2, name); 
     } 
     System.out.println("enter the postcode");  
     Scanner code = new Scanner(System.in); 
     int id = code.nextInt(); 
     if(cityCode.containsKey(id)) { 
      System.out.println(cityCode.get(id)); 
     } else { 
      System.out.println("City Not found"); 
     } 
+0

Большое спасибо – Jason2020

0

Вот прямой подход:

Во-первых, вы хотите пользователю ввести пароль. Если passcode меньше 9999, вы хотите найти текстовый файл, чтобы найти город с этим кодом доступа. Эта вещь может быть реализована как:

 int passcode = 5; // Suppose passcode is 5. You may suppose any value lesser than 9999 
     Scanner input = new Scanner(System.in); 
     // Ask user to enter a passcode. If user enters 9999 the while loop is exited 
     while(passcode < 9999) 
     { 
      System.out.println("Enter passcode: "); 
      passcode = input.nextInt(); 
      // donot search if passcode is greater than or equal to 9999 
      if(passcode < 9999) 
       searchCity(passcode); 
     } 

searchCity() метод работает так:

public static String searchCity(int passcode) { 
    Scanner citiesScanner = new Scanner(new File("Files\\cities.txt")); 
    while(citiesScanner.hasNext()) { 
     String city = citiesScanner.next(); 
     String pass = citiesScanner.next(); 
     if(Integer.parseInt(pass) == passcode) { 
     return city; 
     } 
    } 
    return "City not found"; 
} 

Просто попробуйте разбить вашу проблему на подразделы проблемы. Перед началом ввода кода выполните некоторые работы с бумагой. Все становится намного проще.

+0

Большое спасибо, и да, мне нужно работать над этим, потому что я не занимаюсь бумажной работой до того, как я начну. – Jason2020

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