Fehlersuche

Thomaskloea

Mitglied
Hallo, ich soll die Fehler hier finden, tue mich aber schwer damit. Ich habe mal angemerkt, was meiner Meinung nach wie verbessert werden müsste. Gerne bin ich für Hilfe und Tipps offen.


Javascript:
public class HelloWorld
{
 
  public static void main(String[] args)
  {
    
    int a = 10;
    int b;  // 1. Fehler: int b nicht definiert?
if (a = 10) {
int c = a + b; //Folgefehler (deshalb geht die Rechnung nicht 
b = 2 * c;
a++;
}
    
else (a > 10) {
int a = -1;
}
int c = a > b ? a : "b"; // 2. Fehler: "b" funktioniert nicht, da c typ int ist.
    
  }

}

Liege ich richtig oder komplett falsch?
 
K

kneitzel

Gast
Das sind erste Dinge. Hast Du den Code denn einmal in eine Datei gepackt und übersetzt? Und geschaut, was der Compiler sagt?

Ansonsten was direkt ins Auge fällt: Vergleich ob a 10 ist, ist eine Zuweisung und kein Vergleich
Bei else fehlt noch ein if so das die Absicht ist,,,
 

temi

Top Contributor
Bei int b; hast du zwar Recht, dass b zwar deklariert und nicht explizit definiert wird, aber b wird dennoch implizit den Wert 0 haben. Damit kann dann auch die folgende Rechnung ganz normal durchgeführt werden.

Ich würde allerdings den Tip von @JustNobody beherzigen und das einfach ausprobieren.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Bei int b; hast du zwar Recht, dass b zwar deklariert und nicht explizit definiert wird, aber b wird dennoch implizit den Wert 0 haben. Damit kann dann auch die folgende Rechnung ganz normal durchgeführt werden.

Nein, das ist so nicht ganz richtig. Das wird in der java Language Specification unter 4.12.5 definiert:

Bei Klassen- und Instanzvariablen sowie Array-Elementen ist das Verhalten, so wie von Dir beschrieben (Default Wert wird zugewiesen). Aber hier handelt es sich um eine lokale Variable: "A local variable (§14.4, §14.14) must be explicitly given a value before it is used"

Daher wird der Compiler das Konstrukt, so wie von @Thomaskloea beschrieben, anmeckern.
 

temi

Top Contributor
Nein, das ist so nicht ganz richtig. Das wird in der java Language Specification unter 4.12.5 definiert:

Bei Klassen- und Instanzvariablen sowie Array-Elementen ist das Verhalten, so wie von Dir beschrieben (Default Wert wird zugewiesen). Aber hier handelt es sich um eine lokale Variable: "A local variable (§14.4, §14.14) must be explicitly given a value before it is used"

Daher wird der Compiler das Konstrukt, so wie von @Thomaskloea beschrieben, anmeckern.
Oh, danke für den Hinweis. Das war mir nicht bewusst. :):)
 

VfL_Freak

Top Contributor
Moin,

so, mal etwas sauberer formatiert:
Java:
public static void main(String[] args)
{
    int a = 10;
    int b;

    if( a == 10 )   // SO wird verglichen! Du hattest hier eine Zuweisung
    {
        int c = a + b;
        b = 2 * c;
        a++;
    }
    else( a > 10 )
    {
        int a = -1;
    }

     int c = a > b ? a : "b";   // 2. Fehler: "b" funktioniert nicht, da c typ int ist
}
Du wirst NIE in Deinen ELSE-Fall kommen, da ja 'a' initial den Wert "10" hat - es sei denn, Du baust das Ganze in eine Schleife

Zur letzten Zeile hast Du den Fehler schon richtig erkannt!
Du versuchst ggf. einen String mit dem Inhalt 'b' auf die Integervariable 'c' zu schreiben, was natürlich so nicht funktionieren kann.
Zudem wird 'a' nie größer als 'b' sein, da Du ja wie gesagt Dein IF nur genau einmal durchläufst!

Aber der genaue Sinn des Ganzen erschließt sich mir auch nicht - selbst wenn das nur eine Übung sein sollte !!
Du solltest am Ende zumindest mal die Werte der Variablen ausgeben!

Noch ein Tipp: Du deklarierst 2x 'int c', was immer zu (Verständnis-)Problemen führt !!!

VG Klaus
 

Maliko

Bekanntes Mitglied
Wenn ich mir den Code so anschaue vermute ich mal, dass er den Code gar nicht selbst geschrieben hat, sondern das ne Hausaufgabe ist. Sprich der Lehrer hat den falschen Code geschrieben und er soll die Fehler finden. Hat unserer Ausbilder in der Ausbildung auch ganz am Anfang gemacht.

Der Else-Case ist richtig? Müsste der Teil nicht eigentlich so aussehen?
Java:
if( a == 10 )   // SO wird verglichen! Du hattest hier eine Zuweisung
{
    int c = a + b;
    b = 2 * c;
    a++;
}
else if( a > 10 )
{
    int a = -1;
}

Kann man das if im else-Case echt weglassen? Wäre mir persönlich neu.
 

X5-599

Top Contributor
Nein, das kann man im ELSE nicht weglassen. Entweder man setzt das IF davor (wie von dir gepostet) oder man lässt die Überprüfung (a > 10) weg. Ich denke auch es ist eine Übungsaufgabe. Daher ist es unerheblich ob der Code Sinn ergibt oder nicht.
 

Maliko

Bekanntes Mitglied
Ich denke mal es geht in der Aufgabe nur um Syntaxfehler und nicht um Logikfehler. Von daher sollte man sich glaube ich über nicht erreichbare else-Fälle gar nicht erst irgendwelche gedanken machen.
 

X5-599

Top Contributor
Denke ich auch. Syntaxfehler und andere Fehlerquellen. Falls ich nicht irre wurde z.B. noch nicht erwähnt, dass das int a = -1; selbst in einem korrekten else if(xxx) einen Compilerfehler gibt, da diese Variable bereits existiert. Ganz zu Anfang mit: int a = 10;.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Fehlersuche-kann mir jemand helfen? Java Basics - Anfänger-Themen 46
A Fehlersuche Java Basics - Anfänger-Themen 2
MR._FIRE_Flower Programm Fehlersuche Java Basics - Anfänger-Themen 16
T Hilfe bei der Fehlersuche Java Basics - Anfänger-Themen 23
D Fehlersuche Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
1 Fehlersuche Java Basics - Anfänger-Themen 4
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
L ReplaceALL - Fehlersuche Java Basics - Anfänger-Themen 11
A Java Fehlersuche Java Basics - Anfänger-Themen 2
N Hoffnungslose Fehlersuche Java Basics - Anfänger-Themen 11
I Anfängerfrage: Fehlersuche Java Basics - Anfänger-Themen 2
S Fehlersuche(NullPointerException) Java Basics - Anfänger-Themen 5
S Fehlersuche bzw beheben Java Basics - Anfänger-Themen 9
P Fehlersuche bzgl. Array-Keys Java Basics - Anfänger-Themen 6
N Fehlersuche Printwriter Java Basics - Anfänger-Themen 6
N Hilfe bei Fehlersuche Java Basics - Anfänger-Themen 2
B Fehlersuche bei LinkedList Java Basics - Anfänger-Themen 3
w0ddes Array out of Bounds - Fehlersuche Java Basics - Anfänger-Themen 2
? hilfe bei Fehlersuche Sortierung List Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
D Zeichen im String ändern -> Fehlersuche Java Basics - Anfänger-Themen 7
S Filereader funktioniert nicht! Fehlersuche Java Basics - Anfänger-Themen 9
S Fehlersuche Java Basics - Anfänger-Themen 6
G Fehlersuche bei einer Rechenoperation Java Basics - Anfänger-Themen 2
G Hilfe bei fehlersuche Java Basics - Anfänger-Themen 3
N Fehlersuche. Tasks Java Basics - Anfänger-Themen 14
D Fehlersuche actionPerformed Java Basics - Anfänger-Themen 6
D Fehlersuche: Jar erstellen Java Basics - Anfänger-Themen 6
B Fehlersuche Java Basics - Anfänger-Themen 4
F Fehlersuche erfolglos Java Basics - Anfänger-Themen 3
F fehlersuche. Java Basics - Anfänger-Themen 13
J Fehlersuche - illegal start of expression Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben