Zeile überprüfen

Status
Nicht offen für weitere Antworten.

insertcoin

Aktives Mitglied
Hey ho,

ich lese eine AsciiFile zeilenweise aus, und gebe bestimmt Teile an eine DB weiter. Bisher nur als String, ich möchte aber ein paar bestimmte Attribute als INT übergeben.
Mein Problem ist, dass ich nicht kontrollieren kann ob in meinem String jetzt wirklich nur Zahlen oder auch Buchstaben stehen.

Gibts irgendeine Abfrage, die mir versichert dass in meinem String nur ZAhlen stehen??

Schon mal danke!!

Greeetz insertcoin
 

20mithrandir

Aktives Mitglied
Schau dir im Zweifelsfall mal das hier an:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Character.html#isDigit(char)
 

insertcoin

Aktives Mitglied
danke, das ist nicht schlecht. aber mit der methode muss ich ja auch jedes zeichen einzeln testen.
ich hab gehofft, dass schon mal jemand eine methode geschrieben hat die die ganze zeile abfrägt..
dass heißt, ich übergebe nur den sting. und bekomme ein false, wenn ein anderes zeichen drin steckt.

sonst muss ich mir das teil eben selber schreiben, wär ja auch nicht so wild.
 

20mithrandir

Aktives Mitglied
Wie wär's mit einer Schleife? So eine Methode zu schreiben ist ja nicht schwierig. Eine handvoll Zeilen (mit Exception-Handling).

Leute wollen heutzutage wirklich nix mehr selber machen. Anstatt in Foren zu posten, hättest du das doch viel schneller selbst aus dem Ärmel geschüttelt. Oder Google gefragt (isDigit, isNumeric) - da sind die paar Zeilen hunderte Male aufgelistet.
 
G

Gast

Gast
mach einfach ein chararray aus deiner zeile und iterier drüber..
das ist performant :)
 

insertcoin

Aktives Mitglied
das hat doch nichts damit zu tun, dass ich keine lust habe oder so. sondern einfach nciht etwas, dass ein anderer schon programmiert hat. nochmal schreiben möchte, ist ja auch unsinnig. in der zeit kann ich schon wieder was anderes schreiben, also bleib mal ganz locker.

ich machs ja jetzt auch selber..

Danke für eure Bemühungen!!
 

Murray

Top Contributor
Wenn du hier eine eigene Funktion verwendest, solltest du dir noch überlegen, ob bestimmte Sonderfälle auftreten können. Den hier bereits angedeutete Weg, einfach über das char-Array zu iterieren und zu prüfen, ob alle Zeichen der Bedingung Character#isDigit genügen, könnte man ja so implementieren:
Code:
	public static boolean check1( String str) {
		for ( char c : str.toCharArray()) {
			if ( !Character.isDigit( c)) return false;
		}
		return true;
	}
Diese Methode liefert allerdings auch dann true, wenn a) ein Leerstring, b) ein String mit einer negativen Zahl oder c) ein String mit einem Wert größer Integer.MAX_VALUE übergeben wird.

Den ersten beiden Sonderfällen kann man so begegnen:
Code:
	public static boolean check2( String str) {
		if ( str.length() == 0) return false;
		char[] cc = str.toCharArray();
		for ( int i=0; i<str.length(); i++) {
			char c = cc[i];
			if ( !Character.isDigit( c)) return (i==0) && (c == '-');
		}
		return true;
	}

Beide Wege sind deutlich schneller als Integer#parseInt (grob gemessen liegt da der Faktor 35 dazwischen); allerdings stellt sich die Frage, ob du im Rahmen der Verarbeitung in der Datenbank den Wert nicht doch als int brauchst. Und dann musst du eben doch wieder Integer#parseInt aufrufen, so dass sich die vorgeschaltete eigene Prüfung nur noch dann lohnt, wenn der Wert wirklich falsch ist (denn dann spart man sich für diesen Wert die teure parse-Operation).
 

insertcoin

Aktives Mitglied
danke für den tip, werde das berücksichtigen.
den parseInt Befehl brauche ich nciht, ich nehm nur den Wert (String) und häng ihn an einen StringBuffer der den Befehl darstellt.
z.b.

Insert into tabelle (Attributnamen) value (hier wird nun der wert angehängt);

wichtig ist nur dass im string kein anderes zeichen ist, wenn ich das attribut auf der DB als INT abspeicher. Da meine Applikation sonst eine SQLException wirft.
 

Murray

Top Contributor
insertcoin hat gesagt.:
wichtig ist nur dass im string kein anderes zeichen ist, wenn ich das attribut auf der DB als INT abspeicher. Da meine Applikation sonst eine SQLException wirft.
Dann ist aber auch wichtig, dass der Wert nicht zu groß ist - wie groß er sein kann, hängt AFAIK von der verwendeten Datenbank ab; der SQL-Standard überlässt das der konkreten Implementierung. I.d.R. sind es aber mindestens 32 Bit, so dass ein Java-int passt. Der Wert "12345678901234567890123456789012345678901234567890" wird aber im Zweifel nicht passen, was dann vermutlich auch eine SQL-Exception zur Folge haben wird.

Ich würde hier lieber Integer#parseInt verwenden, obwohl das deutlich länger dauert als die zeichenweise Iteration: im Vergleich zur anschließenden Datenbankoperation ist diese Zeit nämlich komplett vernachlässigbar.
 

insertcoin

Aktives Mitglied
hast recht, so kritisch hab ich das gar nciht betrachtet. aber immerhin sind das benutzereingaben, da könnte schon jeglicher blödsinn anfallen.
werds dann wohl doch so machen, danke nochmal für den tip.

hast wohl schon so deine erfahrungen gemacht, wenn du da gleich an alles denkst oder :) !?
 

Murray

Top Contributor
insertcoin hat gesagt.:
hast wohl schon so deine erfahrungen gemacht, wenn du da gleich an alles denkst oder :) !?
An alles kann wohl keiner denken, aber ja - über das Problem, dass Anwender alles andere als kooperativ sind und den größten Schrott eingeben, bin ich auch schon gestolpert :wink:
 

insertcoin

Aktives Mitglied
stimmt, an alles kann man echt nie denken. aber wenigstens an möglichst viel ist immer schon super :).
ist echt so, da ist man manchmal noch so überzeugt von seiner software. aber wenn der erste benutzer kommt, schafft der das trotzdem das ding abzuschießen. naja, muss man mit leben :).
 

NTB

Bekanntes Mitglied
Also ich finde zwar auch, dass es viele Leute gibt, die einfach mal posten, anstatt selbst zu schauen, aber in Deinem Fall finde ich die Frage berechtigt. Etwas besser wäre es noch gewesen, wenn Du noch etwas mehr um Dein Problem herum gepostet hättest. Mich wundert, dass da jetzt noch keiner drauf hingewiesen hat:

insertcoin hat gesagt.:
ich nehm nur den Wert (String) und häng ihn an einen StringBuffer der den Befehl darstellt.
z.b.
Insert into tabelle (Attributnamen) value (hier wird nun der wert angehängt);

Dafür gibt es PreparedStatements. Mit denen erübrigen sich solche umständlichen Konstruktionen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Warnung in package Zeile Allgemeine Java-Themen 2
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
M Checkstyle 100 Zeichen pro Zeile Allgemeine Java-Themen 11
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
Bluedaishi Zeile um zeichen erweitern Allgemeine Java-Themen 9
M String automatisch in nächste Zeile umbrechen (Graphics) Allgemeine Java-Themen 6
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
KeVoZ_ Nacheinander folgende Strings in Textdokument auf neue Zeile schreiben Allgemeine Java-Themen 6
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
C Speicherung fon Zeile und Spalte Allgemeine Java-Themen 2
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
S CSV Eintrag der nächsten Zeile auslesen funktioniert nicht Allgemeine Java-Themen 8
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
F JTextArea Cursor in die nächste Zeile setzen Allgemeine Java-Themen 2
C Input/Output Bestimmte Zeile in Datei ändern. Allgemeine Java-Themen 13
M Startdatei konnte nicht geparst werden. Fehler in Zeile 0 Allgemeine Java-Themen 5
127.0.0.1 StringBuffer leere Zeile löschen Allgemeine Java-Themen 8
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
X Scanner hört nach der 25. Zeile auf Allgemeine Java-Themen 6
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
1 InputStream liest die letzte Zeile nicht ein Allgemeine Java-Themen 2
S String aus Datei-Zeile auslesen Allgemeine Java-Themen 6
C Zeile aus einer CSV-Datei löschen Allgemeine Java-Themen 3
FoolMoon Datei zeilenweise einlesen, aber nicht die erste Zeile! Allgemeine Java-Themen 3
neonfly Anzahl Zeichen pro Zeile auf der Konsole Allgemeine Java-Themen 8
H RandomAccessFile - Zeile finden Allgemeine Java-Themen 5
S readLine() liest nur jede 2. Zeile Allgemeine Java-Themen 3
J Mit POI Zeile in Excel löschen Allgemeine Java-Themen 5
P readLine() liest nur jede dritte Zeile? Allgemeine Java-Themen 3
G Zeile einfügen in TreeTable Allgemeine Java-Themen 2
M .txt Datei öffnen und jede Zeile mit festem String verketten Allgemeine Java-Themen 5
O Zeile eines Textfiles löschen Allgemeine Java-Themen 2
B in file immer 2. zeile überschreiben Allgemeine Java-Themen 8
J Text einer .csv Datei einlesen und Zeile in NEUE Zeile hänge Allgemeine Java-Themen 1
B Logs - txt-Datei neue Zeile anfuegen, neue Datei erstellen Allgemeine Java-Themen 6
S Zweidimensionales Array neue Zeile erzeugen Allgemeine Java-Themen 3
P Neue Zeile Plattformunabhängig Allgemeine Java-Themen 3
P JTable selektierte Zeile mitwandern Allgemeine Java-Themen 2
Saxony Letzte Zeile eines Streames mit auslesen Allgemeine Java-Themen 4
H Notepad - Mitgabeparameter um in eine Zeile zu springen Allgemeine Java-Themen 15
M Funktion liest nach Textaus aus der vorigen Zeile Allgemeine Java-Themen 2
TheJavaKid Zeile auf existenz von String prüfen. Allgemeine Java-Themen 19
R Einzelne Zeile manipulieren Allgemeine Java-Themen 4
M Datei und Zeile im Code Allgemeine Java-Themen 2
J Matrix mit unterschiedlicher Anzahl von Spalten pro Zeile? Allgemeine Java-Themen 4
W gezielt eine Zeile einlesen? Allgemeine Java-Themen 6
byte Erste Zeile einer Textdatei entfernen Allgemeine Java-Themen 5
L JTable: Wenn Zeile markiert dann Meldung. geht nicht Allgemeine Java-Themen 4
V Class Document seltsam leere Zeile am Anfang Allgemeine Java-Themen 8
G String in String-Array umwandeln in einer Zeile? Allgemeine Java-Themen 2
T Best Practice überprüfen von Übergabeparametern Allgemeine Java-Themen 17
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
E Variablen Aus .txt ausgelesener string mit if() überprüfen? Allgemeine Java-Themen 2
H Wie kann ich überprüfen ob das Feld noch frei ist? Allgemeine Java-Themen 5
C Email Versand überprüfen Allgemeine Java-Themen 1
F Vier gewinnt Diagonal überprüfen Allgemeine Java-Themen 2
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
B Datei überprüfen, ob diese Freigeben ist oder fertig geschrieben wurde Allgemeine Java-Themen 3
T String auf Inhalt bzw. Schema überprüfen Allgemeine Java-Themen 12
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
S Ziffern auf Existenz überprüfen Allgemeine Java-Themen 13
K Threads Thread überprüfen Allgemeine Java-Themen 3
R ThreadPool - vorhandene thread liste überprüfen bzw. aufräumen Allgemeine Java-Themen 3
H Doublewert auf korrektheit überprüfen Allgemeine Java-Themen 18
C String überprüfen Allgemeine Java-Themen 2
T Methodenparameter zur Compile-Zeit überprüfen Allgemeine Java-Themen 8
K Vollständiges Schreiben überprüfen Allgemeine Java-Themen 4
X Java Schachzüge überprüfen Allgemeine Java-Themen 7
C Array überprüfen Allgemeine Java-Themen 8
J String auf E-Mail überprüfen Allgemeine Java-Themen 4
J DecimalFormat überprüfen Allgemeine Java-Themen 8
G überprüfen ob string unteranderem ein regex enthalten Allgemeine Java-Themen 7
D Kommazahl auf Richtigkeit überprüfen Allgemeine Java-Themen 3
C Reflection Übergabeparamter überprüfen? Allgemeine Java-Themen 3
X XML- Datei überprüfen Allgemeine Java-Themen 2
S String auf ASCII Kodierung überprüfen? Allgemeine Java-Themen 4
T String auf Kommazahl überprüfen Allgemeine Java-Themen 4
P Verbindung überprüfen Allgemeine Java-Themen 5
J Chars auf Gleichheit mit Klamern/Operatoren überprüfen Allgemeine Java-Themen 3
N Ausgaben (System.out) umlenken und in Unit-Tests überprüfen? Allgemeine Java-Themen 2
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
P Wie überprüfen ob es sich Hexadezimalzahl handelt? Allgemeine Java-Themen 2
S Klasse einer Methode übergeben und überprüfen Allgemeine Java-Themen 7
M String auf Zeichen überprüfen Allgemeine Java-Themen 5
N String überprüfen ob nur Ziffern enthalten sind!! Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben