Java abfangen von fehlerhaften eingabe

2 Antworten

Deine Methode ist etwas undurchsichtig.

Als erstes ist die Methode statisch. Ich kenne den Kontekt nicht, aber ich halte es bei einem objektorientierten Taschenrechner eher für unnötig statische Methoden zu definieren.

Ansonsten hat deine Methode 2 Parameter, die inhaltlich (scheinbar) das gleiche repräsentieren - nur die Art, wie die Information vorliegt, ist unterschiedlich. In deiner Methode wird außerdem der Parameter "strNum1" überhaupt nicht verwendet und der Parameter "intNum1" wird nie ausgewertet, sondern direkt überschrieben. Warum sind diese Parameter dann definiert?

Im catch-Zweig definierst du die Variable "intNum11" vom Typ String. Mal abgesehen, dass diese Namensgebung verwirrend ist, wirft die Methode "Scanner.next()" eine "NoSuchElementException", wenn kein weiteres Wort (Token) vorhanden ist. Das äußert sich meist in einem Programmabsturz.

Einfach so abgebrochen? Wohl kaum, oder? Was passiert genau?

do while + try catch Abfrage in Java zur Eingabenkontrolle erzeugt unendlichen Loop

Also ich will in Java eine Methode schreiben die die Eingabe kontrolliert und dann bei korrekter Eingabe den eingegeben Wert zurückgibt. Mein Quellcode sieht so aus

public static int liesInt(String Ausgabe)
{       
    Scanner eingabe = new Scanner (System.in);
    int eingegeben = 0;
    System.out.println(Ausgabe);
    boolean error = true;
    
    do
    {
        try
        {
            eingegeben = eingabe.nextInt();
            error = false;
        }
        catch(InputMismatchException e)
        {
            System.out.println("Bitte geben Sie nur ganze Zahlen ein!");
            error = true;
        }   
    } while (error == true);
            
    return eingegeben;
}

mein problem ist dass er nach dem der catch greift und den error wert auf true gesetzt ist er nicht wieder zum try springt und nicht erneut nach einer eingabe fragt...

wo ist mein fehler eigentlich müsste er nach dem catch wieder oben anfangen beim try aber das passiert nicht

...zur Frage

Wie mehrere Methoden in Java

Hallo zusammen,

und zwar lern ich gerade Java und hab mir en Programm geschrieben, dass einen Roulett-Tisch simulieren sollte. jetzt kahm mein ausbilder her und hat mir lauter Methoden über mein Programm geschriebn, jetzt wei´ß ich nicht, wie ich das machen muss oder was ich da überhaupst machen soll, kann mir jemand helfen ???

Entwicklungsumgebung: Eclipse

import java.util.*;

public class Roulette {

 private static boolean askForHighRisk(){
      return false;
  }
  private static boolean askForQuit(){
      return true;
  }
  private static boolean askBetOnEven(){
      return true;
  }
  private static int askSetOnNumber(){
    return 0;

  }
  private static int askForStake(int minLimit, int maxLimit){
      return 0;
  }
  private static int rollBall() {
      return 1;
  }  

  public static void main(String[] args) {

  System.out.printf("Bitte gib dein Startgeld zwischen 10€ und 10.000€ ein (in 10€ Schritten)!!!\n");

  Scanner startMoney = new Scanner (System.in);
  int  startmoney = startMoney.nextInt();
  int modulo = startmoney%10;
  int realstartmoney = 0;
  int zahlintager;
  String A= "A";
  String B= "B";
  String ja = "ja";
  String nein = "nein";


  //set the startmoney, only 10€ steps between 10 -10 000 
  if (startmoney > 10000) {
    startmoney =10000;
  }

  if (startmoney != 0) {
    realstartmoney = startmoney-modulo;
  }
  else {
    realstartmoney = startmoney;
  }

System.out.println("Sie haben jetzt " + realstartmoney + "€ auf ihrem Konto");

//loop till no money
  while (realstartmoney >0) {

    //set random int number
    int generator = (int) (Math.random()*36);      



  System.out.println("Wollen sie mit einer \"A (hohen)\" oder einer \"B (niedrigen)\" Chance spielen?");



  String choiceAorB = new String();
  Scanner AorB = new Scanner(System.in);
  choiceAorB = AorB.next();
  int geradeungerade = generator % 2;       

  if (choiceAorB.contentEquals(A)) {
    System.out.println("wollen sie auf \"A (gerade)\" oder \"B (ungerade)\"setzen");


    String choiceBorA = new String();
    Scanner BorA = new Scanner(System.in);
    choiceBorA = BorA.next();

    System.out.println("Wie viel wollen sie setzen????");

    Scanner setMoney = new Scanner(System.in);
    int nosetmoney = setMoney.nextInt();
    int setmoney = 0;
    int modulo2 = nosetmoney%10;

    if (modulo2 != 0) {
      setmoney = nosetmoney-modulo2;
    }
    else {
      setmoney = nosetmoney;
    }

    if (setmoney < 10) {
      System.out.println("Dein Einsatz wurde auf 10€ gesetzt");
      setmoney =10;
    }
          if (setmoney> realstartmoney) {
            System.out.println("So viel Geld h
...zur Frage

Java Umlaute ersetzen Scanner?

Hi, ich verstehe nicht warum die Umlaute nicht ersetzt werden, sollte doch mit der replace() Methode funktionieren. Könnt ihr mir helfen ?

CODE:

    Scanner s = new Scanner(System.in, "UTF-8");
    
    System.out.println("Vorname: "); String vorname = s.nextLine().toLowerCase().replace("ä","ae").replace("ö", "oe").replace("ü","ue");
    System.out.println("Nachname: "); String nachname = s.nextLine().toLowerCase().replace("ä","ae").replace("ö", "oe").replace("ü","ue");
    System.out.println(nachname + "." + vorname + "@student.tgm.ac.at");
    
    s.close();
}

}

...zur Frage

JAVA-Problem: Hexadezimalzahlen umwandeln (Binär, Dezimal)

Hey Leute, ich habe als frischer Informatikstudent ein kleines Problem.

Die Aufgabe lautete: Wenn ich etwas eingebe, beispielsweise eine Dezimalzahl, dann soll dafür die jeweilige Hexadezimal-, Binär- oder Oktalzahl ausgegeben werden. Ein Programm für eine Binär- und Dezimalzahleingabe habe ich schon geschrieben. Diese verschiedenen Eingaben sollen nacheinander funktionieren, d.h. das folgende Programm muss dann nur noch in das Hauptprogramm gebracht werden, was denke ich kein Problem sein wird.

Problem: Eine Hexadezimalzahl kann eine Zahl oder ein Buchstabe sein, deshalb konnte ich für die einzugebende Zahl kein "int" nehmen. Ich habe jedoch keinerlei Ahnung wie ich das Programm dazu bringen kann einen String als int zu sehen... Ich habe deshalb etwas versucht was jedoch aus irgendeinem Grund nicht funktioniert. im Hauptprogramm habe ich Integer.toBinaryString(), Integer.toHexalString etc. verwendet.

Kann mir jemand das Brett vor dem Kopf entfernen? (bzw. den Denkfehler beheben....)

PROGRAMM:

import java.util.Scanner;

public class ZahlensystemHex {

public static void main(String[] args) 
{
     Scanner sc1 = new Scanner(System.in);


     System.out.println("Bitte geben Sie eine Zahl hexadezimal ein");


     String hex = sc1.next(); 


     int hex1 = Integer.parseInt(hex, 16); 
     System.out.println("Dezimal: " + Integer.toString(hex1));
     System.out.println("Binär: " + Integer.toBinaryString(hex1));


     sc1.close();
}

}

...zur Frage

"Cannot convert boolean to string" - Wie kann ich diesen Fehler beheben?

import java.util.Scanner;
import java.util.Random;

public class Ratespiel {
  public static void main(String[] args) {
    Scanner scannerVariable = new Scanner(System.in);
    Random var1 = new Random();
    String read;
    int zahl1 = var1.nextInt(100);
    read = String.valueOf(zahl1);
    read = String.valueOf(var1);
    
    System.out.println("Ich habe mir eine Zahl von 0 bist 100 ausgedacht! Errate sie! ");
    read = scannerVariable.nextLine();

    if (read.equals(var1)) {
      System.out.println("Super du hast es gschafft die Zahl lautete: " + var1);
    }
    else if (read.equals(<var1)) {
      System.out.println("Die Zahl ist größer");
    }
    else if (read > var1) {
      System.out.println("Die Zahl ist niedriger");
    }

    scannerVariable.close();
  }
}
...zur Frage

Java System.in.read() funktioniert nicht richtig?

Ich habe folgendes Programm geschrieben:

package pack1;

import java.io.IOException;

public class MainProgramm {

    public static void main(String[] args) {

        int zahl;
        System.out.println("Geben Sie eine Zahl ein:");
        try {
          zahl = System.in.read();
          System.out.print("Sie haben die Zahl " + zahl + " eingegeben.");
        }
        catch (IOException e){
          System.out.println("Fehler");
        }

    }

}

Wenn ich es laufen lasse erhalte ich folgende Ausgabe:

Geben Sie eine Zahl ein:

3

Sie haben die Zahl 51 eingegeben.

oder

Geben Sie eine Zahl ein:
0
Sie haben die Zahl 48 eingegeben.   

also immer genau 48 zu viel.

Wenn ich Buchstaben eingebe erhalte ich keinen Fehler, sondern ebenfalls seltsame Ergebnisse:

Geben Sie eine Zahl ein:
d
Sie haben die Zahl 100 eingegeben.

oder

Geben Sie eine Zahl ein:
g
Sie haben die Zahl 103 eingegeben.

Jetzt meine Frage: Wo liegt der Fehler? Oder kann ich Eingaben am besten mit einer ganz anderen Klasse machen?

...zur Frage

Was möchtest Du wissen?