Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Prüfen auf -1 funktioniert nicht

Frage Entwicklung Java

Mitglied: Power-Poler

Power-Poler (Level 1) - Jetzt verbinden

05.08.2012 um 13:26 Uhr, 3517 Aufrufe, 11 Kommentare

Hallo
Versuche mich ja gerade an Java, und arbeite mich da gerade durch ein Tutorial.
Nun habe ich aber wider ein Problem.

Und zwar versuche ich eine Eingabe auf Korrektheit zu Prüfen.
Folgende Zeichen sind erlaubt:
1
2
3
-1
Habe es so weit, das mein Prüfer die Eingabe zwischen 1-3 und String unterscheiden kann.
Also wenn die Angabe z.B. "Hallo" ist, ist sie Falsch.
Bei 1-3 Richtig.
Wenn ich aber -1 eingebe kommt auch Falsch(Soll aber Richtig sein)
Irgendwas mache ich falsch, weiß aber noch nicht wo.

hier meine class:

01.
class Pruefer 
02.
03.
	private String eingabe; 
04.
	 
05.
	public void Eingabe() 
06.
07.
		//int eingabe; 
08.
09.
	public boolean pruefen(String eingabe) 
10.
11.
		if(eingabe.matches("[0-9]+")) 
12.
13.
			int eingabe1 = Integer.parseInt(eingabe); 
14.
			 
15.
			if (eingabe1 == 1) 
16.
17.
				return true; 
18.
19.
			else  
20.
				if (eingabe1 == 2) 
21.
22.
				return true; 
23.
24.
				else  
25.
					if (eingabe1 == 3) 
26.
27.
					return true; 
28.
29.
					else  
30.
						if (eingabe1 == (2-3)) 
31.
32.
								return true; 
33.
34.
						else 
35.
							return false; 
36.
37.
		else 
38.
			return false; 
39.
40.
}
Stehe beim class schreiben noch relativ am Anfang. Wenn jemand Tipps hat, wie ich das aufgeräumter /kürzer schreiben kann, immer her damit.
Das mit dem 2-3 war nur ein versuch, eigentlich soll dort -1 stehen.
Vermute den Fehler ja in dieser Zeile:
01.
if(eingabe.matches("[0-9]+"))
Aber auch wenn ich dort das + entferne geht es nicht.

Schonmal Danke für eine Antwort.
Mfg
Power-Poler
Mitglied: bastla
05.08.2012 um 14:20 Uhr
Hallo Power-Poler!

Versuch es einmal mit
if(eingabe.matches("[+-]*[0-9]+"))
Grüße
bastla
Bitte warten ..
Mitglied: dog
05.08.2012 um 14:24 Uhr
...da war der bastla mal wieder schneller, auch wenn ich nicht unbedingt "----9" erlauben würde

Viel einfacher wäre es aber sich die String-Prüfung ganz zu sparen und einfach die Exception von Integer.parseInt zu fangen (die in dem Programm auch immer noch auftreten kann. Versuch mal 8589934591 einzugeben...)
Bitte warten ..
Mitglied: bastla
05.08.2012, aktualisiert um 14:32 Uhr
@dog
auch wenn ich nicht unbedingt "----9" erlauben würde
Hast recht
if(eingabe.matches("^[+-]{0,1}[0-9]+$"))
Grüße
bastla
Bitte warten ..
Mitglied: Power-Poler
05.08.2012, aktualisiert um 14:41 Uhr
Danke für eure Antworten.
@dog:
8589934591
Exception in thread "main" java.lang.NumberFormatException: For input string: "
8589934591"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Pruefer.pruefen(VorratskammerTester.java:14)
at VorratskammerTester.main(VorratskammerTester.java:158)
Aber warum?
Naja, ist für die Aufgabe bestimmt unerheblich; aber wenn ich noch eine Längenprüfung hinein baue, müsste es doch gehen, oder gibt es dan noch weitere Stolperfallen?
01.
if(eingabe.length() < 3)
Ja, hat funktioniert
@bastla
Danke, das funktioniert jetzt.
Hab gerade noch eine Aktualisierung bemerkt, auf was wird dort jetzt genau überprüft?
Bitte warten ..
Mitglied: bastla
05.08.2012, aktualisiert um 14:43 Uhr
Hallo Power-Poler!

Es sollte jetzt nur noch möglich sein, am Beginn (^) kein oder ein Plus oder Minus und danach bis zum Ende ($) nur noch mindestens eine Ziffer einzugeben (wenn Du die Anzahl der Ziffern festlegen willst, kannst Du als Pattern zB
^[+-]{0,1}[0-9]{1,4}$
für maximal 4-stellige Zahlen verwenden) ...

Grüße
bastla
Bitte warten ..
Mitglied: Power-Poler
05.08.2012, aktualisiert um 14:50 Uhr
Ah, ich glaube langsam verstehe ich es.
Auch wenn mich dein 1-4 etwas irritiert hat.
Weil oben 0,1 in der {} Steht.
Aber so kann ich mir die lägen Prüfung sparen.
Danke euch beiden, jetzt kann ich endlich weitermachen

Das ist furchtbar mit der Bearbeiten Funktion, ständig ändert sich alles
Bitte warten ..
Mitglied: dog
05.08.2012 um 14:57 Uhr
^$ ist in dem Fall überflüssig, weil die String.matches() Funktion die immer automatisch hinzufügt.

Testen kann man das hier: http://www.regexplanet.com/advanced/java/index.html

Und {0,1} würde ich noch als ? abkürzen
Bitte warten ..
Mitglied: bastla
05.08.2012 um 14:58 Uhr
Hallo Power-Poler!
Das ist furchtbar mit der Bearbeiten Funktion, ständig ändert sich alles
Nennt sich "work in progress" - jetzt bleibt's aber so, wie's da oben steht ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
05.08.2012 um 15:00 Uhr
Hallo dog!

Danke für die Ergänzungen - dann schreib ich nochmals die vorläufig endgültige Version hin:
if(eingabe.matches("^[+-]?[0-9]+"))
Grüße
bastla
Bitte warten ..
Mitglied: Power-Poler
05.08.2012, aktualisiert um 15:35 Uhr
So nächstes Problem (Ich schreib es mal hier mit rein, wenn ihr meint, das ein neues Thema besser ist, kurz sagen, dan lösche ich es hier und mach ein neues).

Hier ist jetzt meine Eingabeaufforderung:
01.
Eingabe = "OK"; 
02.
	while ((Eingabe.equals("-1")) ) 
03.
04.
		System.out.println("Treffen Sie ihre Auswahl (1, 2 oder 3). Exit -1:"); 
05.
		Eingabe = scan.nextLine(); 
06.
 
07.
		 
08.
			 
09.
		if (test.pruefen(Eingabe)) 
10.
			System.out.println("Richtig"); 
11.
		else 
12.
			System.out.println("Falsch"); 
13.
	}
Funktioniert auch soweit, nur das ich ungleich an stelle es equels bräuchte.
Hatte es mit != versucht, aber das will Java bei Strings leider nicht.

Hab ne lösung gefunden:
01.
boolean weiter = true; 
02.
while (weiter) 
03.
if (Eingabe.equals("-1")) 
04.
   weiter= false;
Bitte warten ..
Mitglied: 76109
05.08.2012, aktualisiert um 17:13 Uhr
Hallo Power-Poler!

Eventuell funktionierts auch mit:
01.
While (!Eingabe.equals("-1"))
Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
Internetverbindung funktioniert erst nach ipconfig renew (6)

Frage von Joshh1 zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst W2008 R2 msiinstaller funktioniert nicht mehr (5)

Frage von Alix zum Thema Windows Server ...

C und C++
gelöst IF Abfrage funktioniert nicht mehr (2)

Frage von pablovic zum Thema C und C ...

Microsoft Office
gelöst Excel: Text in Zellbereich prüfen mit Vergleichstext ggf. mit Exact-Funktion (5)

Frage von Michi1 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...