porównywanie danych z pliku txt do podanych na klawiaturze

0

Witam, mam problem z porównaniem danych. Chce stworzyć program, który zapisana wartość string w pliku tekstowym porówna z wartością danych wpisanych na klawiaturze.

Mój problem widzę w pliku tekstowym gdzie zapisany jest string (znajdują się tam białe znaki, które podczas porównywania metodą

==

są wyłapywane i przykładowa wartośc
"1234 " jest nierówna wpisanej na klawiaturze "1234". Chciałem użyc metody

trim()

ale wyskakuje błąd Exception in thread "main" java.lang.NullPointerException
at Projekt.Sklep.main(Sklep.java:51)

Czy ktoś ma jakikolwiek pomysł jak można to usprawnić? 

```java
public class Sklep { 
	public static void main(String args[]){
		  Scanner sc=new Scanner(System.in);
		String kod;
		String line = "";
		FileInputStream fin = null;
		try{
			fin = new FileInputStream("id.txt");
		}
		catch(FileNotFoundException e){
			System.out.println("Brak pliku id.txt");
			System.exit(-1);
			
		}
		DataInputStream out = new DataInputStream(fin);
		BufferedReader inbr = new BufferedReader(new InputStreamReader(fin));
		
		try{ 
			while ((line = inbr.readLine()) != null){
				System.out.println(line);
			
				
			}
		}
		catch(IOException e){ 
			System.out.println("Blad wejscia-wyjscia");
		}
kod= JOptionPane.showInputDialog("Podaj id klienta");
    
        
        line.trim();
        
        
        if(kod!=line){
            System.out.println("Id  jest nieprawidłowy");
           kod= JOptionPane.showInputDialog("Podaj własciwe id klienta");
		
		
        }
        if(kod!=line){
            System.out.println("Bledne id ");
            System.out.println("Skontaktuj się z działem odsługi klienta");
}
    
else { 
            System.out.println("Kod pin prawidłowy. Wybierz jedną z opcji.\n"); 

Będę wdzięczny za każda pomoc. Pozdrawiam

1
  1. Nigdy nie porównuj Stringów przy pomocy operatora ==. Zawsze tak: s1.equals(s2). Operator == porównuje referencje, a nie zawartość Stringów.
  2. Kiedy wywołujesz line.trim(), to jesteś poza pętlą czytająca, tzn. line == null. Pojawienie się wyjątku jest zatem dość oczywiste.
  3. Imho, należy najpierw odpytać użytkownika o id, a potem sprawdzać w pętli czy jest właściwy. Jeżeli chcesz w odwrotnej kolejności, to musisz wszystkie wiersze odczytane z pliku zapamiętać w jakiejś kolekcji.
0

Jakoś tak:

kod = JOptionPane.showInputDialog("Podaj id klienta");
DataInputStream out = new DataInputStream(fin);
BufferedReader inbr = new BufferedReader(new InputStreamReader(fin));
boolean ok = false;
try{ 
    while (((line = inbr.readLine()) != null) && !ok){
        if(line.equals(kod)){
            ok = true;
        }
    }
}
catch(IOException e)
{ 
    System.out.println(e);
}
if(ok){
    System.out.println("Kod pin prawidłowy. Wybierz jedną z opcji.\n"); 
}
else{
    ...
}
0

dziękuje za pomoc, pozdrawiam, problem rozwiązany :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1