Wie kann ich überprufen das die eingabe übder die Tastatur nur zahlen enthält?... ich hab mir mal diesen Anfang zusammengebastetl... komme aber net weiter ..
Code:
String ram, ram2;
int laenge_artikel = 0;
..........
ram = input.readLine();
laenge_artikel = ram.length(); // Länge von ram(eingabe) wird im laenge_artikell abgelegt
for(int i = 0; i < laenge_artikel; i++){
ram2 = ram.substring(i, i);
if(ram2 != 1) { // ist hier nur zum testen... und warum zeigt er mit bei >= "1" einen fehler an?
System.out.print("! ");
ram2 ist ein String, die Zahl 1 dagegen ein int. Deshalb kannst du die beiden nicht so einfach mit >= vergleichen, weil >= nur auf int, long, double etc. angewendet werden kann, nicht aber auf einen String, auch wenn da nur Ziffern drin stehen.
die Methode isNumeric überprüft, ob der String nur aus Ziffern besteht.
Java ist da ziemlich streng, was Datentypen angeht.
ok aber ich kriegs net eingebaut XD...
also ich machs so:
Code:
System.out.print("Bitte geben Sie die gewünschte Artikelnummer ein: "); // Ausgabe zur Anfrage von Atrikelnummer
ram = input.readLine();
if(ram.isNumeric()==true) {
//tute das
}
aber mein eclips kennt den befehl net... was mache ich falsch ?
mhhh...keine Ahnung, aber in der API steht der auch nicht...*Tissi hau* Idiot, echt
Dagobert:
Also, so wird das nichts, die Methode gibt es nicht.
Du kannst über Integer.intValue(ram2) deinen String in einen int, also eine Zahl (siehe Tissis Erklärung) umwandeln. Wenn dabei eine NumberFormatException fliegt, ist es keine Zahl
So ich hab das ganze jetzt mal in meinen code eingebaut...
Code:
import java.io.*;
import com.sun.org.apache.*;
public class RabattV3 {
public static void main(String[] args) throws IOException {
// Variabeln deklarieren und Initzialisieren
int artikel, kundenklasse, artikelmenge, prozent = 0;
int laenge_artikel = 0;
String ram;
String fehler = "";
boolean b;
// Neuer Lesebuffer erstellen mit dem Namen input
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
// Benutzereingaben
System.out.print("Bitte geben Sie die gewünschte Artikelnummer ein: "); // Ausgabe zur Anfrage von Atrikelnummer
ram = input.readLine();
Pattern p = Pattern.compile("ram");
Matcher m = p.matcher("\d");
b = m.matches();
if(b == true) { //Wenn ram nur aus Zahlen besteht dann mache weiter
artikel = Integer.parseInt(ram);
Nun es geht net und ich hab echt kein Plan warum... es heißt das \d keine gülige escape sequenz ist... aber erstetze ich das \d duch ein anderes zeichen welches geht... dann wird compile, mather usw. als falsch angezeigt ???:L :bahnhof:
tsts das hatte wir doch neulich schonmal mit 0en und 1en. Vielleicht mal ein Eintrag in die FAQ?
wenns nur ein billiger Integer ist, reicht Integer.parse(String), aber Vorsicht mit Vorzeichen und die Exception dann ausnahmsweise mal benutzen!!!
ansonsten sage ich:
Für String->Zahlen konvertierung muss man auch immer an irgendwelche vorzeichen kommas e's usw denken (zb 0.45e15 ist eine Zahl!, 1.000,00 EUR ist eine Zahl!) dafür gibt es in Java die
Format-Klassen (zb NumberFormat, DateFormat usw)