Variable 'runde' might not have been initialized

J

Jannnnn

Neues Mitglied
0
Hallo,

ich bin sehr unerfahren und neu in Java/Android Studio.
Versuche mir Android Studio gerade mit "Android-Apps entwickeln für Einsteiger von Uwe Post" beizubringen.

Komme momentan nicht weiter:
Bekomme folgende Fehlermeldung bei der Variable: runde:
Variable 'runde' might not have been initialized

package de.androidnewcomer.mueckenfang;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class GameActivity extends AppCompatActivity {

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);

}

private void spielStarten(){
boolean spiellaeuft = true;
int runde = 0;
int punkte = 0;
starteRunde();
}
private void starteRunde(){
int runde = runde+1; //Hier kommt die Fehlermeldung
int muecken = runde*10;
int gefangeneMuecken = 0;
int zeit = 60;
bildschirmAktualisieren();
}
private void bildschirmAktualisieren(){
TextView tvPunkte = (TextView)findViewById(R.id.points);
tvPunkte.setText(Integer.toString(punkte)); //Hier sagt er cannot resolve symbol
TextView tvRunde = (TextView)findViewById(R.id.round);
tvRunde.setText(Integer.toString(runde)); //und hier.
}
}


in private void spielStarten() wird "runde" doch initialisiert? Zumindest dachte ich so.

Schon einmal vielen Dank!
 
Zuletzt bearbeitet:
Hallo und willkommen im Forum.

Nun , du hast zweimal die Variable "Runde" in zwei verschiedenen Funktionen deklariert.

Schau nochmal in dein Tutorial, das kann so nicht da drinnen stehen.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Jannnnn
Hallo von mir auch ein Willkommen im Forum.

In beiden Methoden erstellst du eine neu lokale Variable „runde“ vom Typ int.

Das ist aber in beiden Methoden nicht die gleiche Variable. Da du sie durch das „int runde „ eine neue lokale Variable erstellst.Die nur gleich heist. Die ist dann nur in der Methode verfügbar. In der anderen nicht.


Mit int runde = runde+1 erstellst du eine neue Variable die auch runde heißt und die neue die noch keinen zahlen wert hat willst du schon nach dem istgleich benutzen das geht nicht.

In dem Beispiel ist „runde“ bestimmt eine globale Klassen Variable im Klassen Rumpf. Und in den Methoden sollte sie ohne das int benutzt werden. Das int bedeutet es eine neue Variable erstellt wird.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Jannnnn
Stimmt, er deklariert die Variablen nicht in den Methoden, schreibt aber auch nichts über globale Variablen etc. Vielleicht wurde das ja ein paar Themen davor angesprochen und ich hab das nur schon wieder vergessen. :)

Hab das jetzt mal so abgeändert, Fehlermeldungen kommen jetzt erstmal keine mehr. Sind die Variablen jetzt Global?

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class GameActivity extends AppCompatActivity {
boolean spiellaeuft = false;
int runde = 0;
int punkte = 0;
int muecken = 0;
int gefangeneMuecken = 0;
int zeit = 0;

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);

}

private void spielStarten(){
spiellaeuft = true;
runde = 0;
punkte = 0;
starteRunde();

}
private void starteRunde(){
runde = runde+1;
muecken = runde*10;
gefangeneMuecken = 0;
zeit = 60;
bildschirmAktualisieren();
}
private void bildschirmAktualisieren(){
TextView tvPunkte = (TextView)findViewById(R.id.points);
tvPunkte.setText(Integer.toString(punkte));
TextView tvRunde = (TextView)findViewById(R.id.round);
tvRunde.setText(Integer.toString(runde));
}
}
 

Anhänge

  • InkedIMG_20190425_153518_LI.jpg
    InkedIMG_20190425_153518_LI.jpg
    1,3 MB · Aufrufe: 195
  • InkedIMG_20190425_153529_LI.jpg
    InkedIMG_20190425_153529_LI.jpg
    1,5 MB · Aufrufe: 194
  • InkedIMG_20190425_153536_LI.jpg
    InkedIMG_20190425_153536_LI.jpg
    1,5 MB · Aufrufe: 202
Zuletzt bearbeitet:
Hallo Jannnn,

Sind die Variablen jetzt Global?

Globale Variablen a la C/C++ gibt es nicht mehr unter Android/Java.

Aber sie sind jetzt "übergeordnet" für deine Klasse und so müsste es auch laufen .
 
  • Danke
Reaktionen: Jannnnn
Ja das sind Klassen Variablen die im Klassen Rumpf erstellt werden. somit in der ganzen Klasse vorhanden sind.


Stimmt echte globale Variablen gibt es in Java nicht., aber die Klassen Variablen kannst du innerhalb der Klasse auch als global ansehen . Man sagt halt manchmal globale Variable anstatt Klassen Variable.

Rheinwerk Computing :: Java ist auch eine Insel - Eigene Klassen schreiben
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Jannnnn
Mhh ich verzweifel schon wieder, das Buch ist teilweise echt merkwürdig geschrieben für einen "androidnewcomer".
Kann mir einer vielleicht eine gute Anfängerlektüre für AndroidStudio empfehlen? Java kann ich so die basics. (Schleifen, Arrays, Strings, etc.)
 
Hallo Jan,

die oben von jogi angegebene Lektüre ist schon recht gut.

Auch haben wir hier ganz oben in der Liste einen eigenen Leitfaden
[LEITFADEN] Der Einstieg in die Android Programmierung mit Android Studio


Bevor du mit AndroidStudio beginnst und Android Programme umsetzt , solltest du Dir damit die Grundlagen der OOP
(Objekt orientierte Programmierung) aneignen. Das muss erst 100% sitzen.
(Arrays,Schleifen und Strings reichen leider nicht)

Erst dann macht es auch Sinn , sich mit Android auseinander zu setzen.
Denn Android hat jede Menge Eigenschaften, die erst dann auch verstanden werden .
 

Ähnliche Themen

Chrilos
Antworten
9
Aufrufe
581
koje71
koje71
M
  • myoggradio
Antworten
4
Aufrufe
906
myoggradio
M
D
Antworten
1
Aufrufe
1.559
koje71
koje71
Zurück
Oben Unten