• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

java.util.NoSuchElementException

0 głosów
2,955 wizyt
pytanie zadane 20 czerwca 2017 w Java przez agigi1988 Nowicjusz (190 p.)

Witajcie,

mam problem z błędem java.util.NoSuchElementException. Czy mógłby ktoś pomóc w zlokalizowaniu problemu?

Z góry dziękuję za pomoc!

package zadanie_4;

import java.io.IOException;
import java.util.Scanner;

public class Main
{

	public static void main(String[] args) throws IOException
	{
		String login, hasło, rola;
		Scanner sc = new Scanner(System.in);
		System.out.println("Witamy w aplikacji");

		Boolean czyUdałoSieZalogowac;
		Aplikacja aplikacja = new Aplikacja();
		do
		{
			System.out.println("podaj login ");
			login = sc.next();
			System.out.println("podaj hasło ");
			hasło = sc.next();
			czyUdałoSieZalogowac = aplikacja.zalogowanie(login, hasło);
			if (czyUdałoSieZalogowac == false)
			{
				System.out.println("Błędny login i hasło");
			}

		} while (czyUdałoSieZalogowac == false);
		System.out.println("Udało się zalogować");
		if (aplikacja.getZalogowanyUzytkownik().getRola().equals("admin"))
		{
			int opcja = 0;

			System.out.println("wybór 1- dodanie użytkowanika");
			System.out.println("wybór 2- wylogowanie się");
			opcja = sc.nextInt();
			if (opcja == 1)
			{
				System.out.println("Prosze podaj mi login nowego użytkownika  ");
				login = sc.next();
				System.out.println("Prosze podaj mi hasło nowego użytkownika  ");
				hasło = sc.next();
				System.out.println("Prosze podaj mi role nowego użytkownika  ");
				rola = sc.next();
				aplikacja.dodajUzytkownika(login, hasło, rola);
				System.out.println("Udało się dodać użytkownika");
			} else if (opcja == 2)
			{
				aplikacja.wylogowanieUzytkownika();
				System.out.println("Został wylogowany ");
			}

		} else if (aplikacja.getZalogowanyUzytkownik().getRola().equals("uzytkownik"))
		{
			int opcja = 0;

			System.out.println("wybór 1- wyświetl mój login");
			System.out.println("wybór 2- wylogowanie się");
			opcja = sc.nextInt();
			if (opcja == 1)
			{
				System.out.println("Twój login to   " + aplikacja.getZalogowanyUzytkownik().getLogin());
			} 
			else if (opcja == 2)
			{
				aplikacja.wylogowanieUzytkownika();
				System.out.println("Został wylogowany ");
			}

		}
	}
}
package zadanie_4;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Aplikacja {
	private Uzytkownik[] uzytkownicy;
	private Uzytkownik zalogowanyUzytkownik;

	public Uzytkownik getZalogowanyUzytkownik() {
		return zalogowanyUzytkownik;
	}

	public Aplikacja() throws IOException // bład wejscia wyjscia
	{

		startAplikacji();

	}

	private void startAplikacji() throws IOException {
		int iloscUzytkownikow;
		Scanner sc = new Scanner(new File("users.txt"));
		iloscUzytkownikow = sc.nextInt();
		uzytkownicy = new Uzytkownik[iloscUzytkownikow];
		int index = 0;
		while (sc.hasNext()) {
			String login = sc.next();
			String hasło = sc.next();
			String rola = sc.next();

			Uzytkownik uzytkownik = new Uzytkownik(login, hasło, rola);
			uzytkownicy[index] = uzytkownik;
			index = index + 1;
		}
	}

	public boolean zalogowanie(String login, String hasło) {
		for (int i = 0; i < uzytkownicy.length; i++) {
			if (uzytkownicy[i].getLogin().equals(login) && uzytkownicy[i].getHasło().equals(hasło)) {
				zalogowanyUzytkownik = uzytkownicy[i];
				return true;
			}
		}
		return false;

	}

	public Uzytkownik dodajUzytkownika(String login, String hasło, String rola) throws IOException {
		Uzytkownik uzytkownik = new Uzytkownik(login, hasło, rola);
		File file = new File("users.txt");

		try (BufferedWriter zapisywacz = new BufferedWriter(new FileWriter(file, false))) {
			zapisywacz.write(" " + (uzytkownicy.length + 1));
			zapisywacz.newLine();

			for (int i = 0; i < uzytkownicy.length; i++) {
				Uzytkownik uzytkownikIstnięjący = uzytkownicy[i];
				zapisywacz.write(uzytkownikIstnięjący.getLogin() + " " + uzytkownikIstnięjący.getHasło() + " "
						+ uzytkownikIstnięjący.getRola());
				zapisywacz.newLine(); // metoda write do zapisywania tekstu

			}
			zapisywacz.write(uzytkownik.getLogin() + " " + uzytkownik.getHasło() + " " + uzytkownik.getRola());
			zapisywacz.newLine();

		} catch (IOException e) {

			throw new RuntimeException();
		}
		startAplikacji();
		return uzytkownik;
	}

	public void wylogowanieUzytkownika() {
		zalogowanyUzytkownik = null;
	}
}
package zadanie_4;

public class Uzytkownik
{

	private String login;
	private String hasło;
	private String rola;

	public Uzytkownik(String login, String hasło, String rola)
	{
		this.login = login;
		this.hasło = hasło;
		this.rola = rola;
	}

	public String getLogin()
	{
		return login;
	}

	public String getHasło()
	{
		return hasło;
	}

	public String getRola()
	{
		return rola;
	}
}

 

2 odpowiedzi

0 głosów
odpowiedź 20 czerwca 2017 przez ShiroUmizake Nałogowiec (46,300 p.)
Podaj trackliste bledu i masz repo na gicie z tym zadaniem?
komentarz 21 czerwca 2017 przez agigi1988 Nowicjusz (190 p.)
nie, nie mam.
0 głosów
odpowiedź 20 czerwca 2017 przez Mateusz51 Nałogowiec (28,180 p.)
jestem prawie pewny że problemem jest scanner i to że używasz next() zamiast nextLine()
komentarz 21 czerwca 2017 przez agigi1988 Nowicjusz (190 p.)

poprawiłam na nextLine(), bez zmian

komentarz 21 czerwca 2017 przez ShiroUmizake Nałogowiec (46,300 p.)
Od kiedy scanner potrafi czytac pliji?
komentarz 22 czerwca 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Od zawsze:)

Z tego co widze to twoj problem lezy w nextInt (). Ja zazwyczaj gdy uzywalem scannera nie kozystalem Z nextInt bo metoda zostawia biale znaki w bufforze tylko robilem nextLine i parsowalem.

Podobne pytania

+1 głos
4 odpowiedzi 1,504 wizyt
pytanie zadane 30 kwietnia 2017 w Java przez embid123 Użytkownik (630 p.)
0 głosów
2 odpowiedzi 490 wizyt
0 głosów
1 odpowiedź 1,269 wizyt
pytanie zadane 18 lutego 2017 w Java przez plkpiotr Stary wyjadacz (12,420 p.)

93,695 zapytań

142,612 odpowiedzi

323,223 komentarzy

63,224 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...