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, 3530 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

Sticky Notes - Autostart unterbinden

Tipp von Pedant zum Thema Windows 10 ...

Ähnliche Inhalte
Vmware
VMware Workstation Restriction funktioniert nicht!? (8)

Frage von f0rml0s zum Thema Vmware ...

Server
Domainweiterleitung funktioniert nicht (2)

Frage von TestTyp12 zum Thema Server ...

Webbrowser
gelöst Sandboxie mit Firefox funktioniert nicht mehr (2)

Frage von KMP1988 zum Thema Webbrowser ...

Linux
Postgresql 9.6 - Synchronus Commit funktioniert nicht

Frage von Phoboz zum Thema Linux ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Base64 Decode (Batch,VBS) (26)

Frage von clragon zum Thema Batch & Shell ...

Flatrates
DeutschlandLAN der Telekom - welche internen IPs? (19)

Frage von qualidat zum Thema Flatrates ...