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, 3554 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 ..
Ähnliche Inhalte
Windows Netzwerk
RDP-Verbindung funktioniert nicht über Fritz!Box-VPN (7)

Frage von MIlexx zum Thema Windows Netzwerk ...

Windows Netzwerk
Domain Master Browsing funktioniert nicht in verschiedenen VLans

Frage von drewsho zum Thema Windows Netzwerk ...

Windows 10
Anmeldung im Windows Store funktioniert nicht mehr (2)

Frage von Desert-Igel zum Thema Windows 10 ...

Batch & Shell
PowerShell-Script zum Prüfen ob Datei(en) existieren (2)

Frage von Bonsai0815 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

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

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Rechtliche Fragen
Hotspot rechtssicher betreiben? (14)

Frage von xSiggix zum Thema Rechtliche Fragen ...

Server-Hardware
gelöst Empfehlung KVM over IP Switch (8)

Frage von Androxin zum Thema Server-Hardware ...