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

java.util.NoSuchElementException

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
2,857 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,263 wizyt
pytanie zadane 30 kwietnia 2017 w Java przez embid123 Użytkownik (630 p.)
0 głosów
2 odpowiedzi 400 wizyt
0 głosów
1 odpowiedź 1,162 wizyt
pytanie zadane 18 lutego 2017 w Java przez plkpiotr Stary wyjadacz (12,420 p.)

93,442 zapytań

142,433 odpowiedzi

322,687 komentarzy

62,804 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

...