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?

Was ist eurer Meinung nach die beste Programmiersprache für Anfänger?

...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

Fehler in leichtem Javascript, wo ist er?

import java.util.Scanner;

public class Antwortscanner{ // Anfang Methoden public static void main (String [] args){ System.out.println("Wie alt bist du?"); Scanner input = new Scanner(System.in); String Alter = input.nextInt();

if (Alter <= 18)
{      
  System.out.println("Du bist aber Jung :^)");
  }
else{
  System.out.println("Alter Knacker");
}

} }

Fehlerquelle: Antwortscanner.java:8:33: error: incompatible types: int cannot be converted to String String Alter = input.nextInt(); ^ Antwortscanner.java:10:15: error: bad operand types for binary operator '<=' if (Alter <= 18) ^ first type: String second type: int

...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?