Variablen Variable scheint nicht initialisiert zu sein

KingOfExceptions

Bekanntes Mitglied
Java:
import java.util.Scanner;

class IndividuelleSchleife
{
  public static void main (String[] args )
  {
    Scanner scan = new Scanner( System.in );
    int anfangszahl,
    	 endzahl;
    boolean J;

    System.out.println("Geben Sie die Anfangszahl ein:");
    scan.nextInt();
    
    System.out.println("Geben Sie die Endzahl ein:");
    scan.nextInt();
    
    System.out.println("Wollen Sie den Computer zählen lassen? (j= JA n= NEIN");
    String express = scan.next();
    
    if(express.equals ("j") )
    {
    	while (anfangszahl <= endzahl)
    		{System.out.println("Die Zahl ist:" +anfangszahl );
    		anfangszahl = anfangszahl+1;}
    	System.out.println("Schleife beendet.");
    }
    		
    System.out.println("Vielen Dank für die Benutzung unseres Programms!");	
    
  }
}

Wieso steht als fehlermeldung dass "anfangszahl" nicht intialisiert wurde?
kann mir da jemand helfen?
das programm soll eigentlich nur zählen....
 
nextInt() gibt den eingegebenen Integer zurück... Du weist es aber keiner Variable zu!
Solltest die Eingaben also in einen Int speichern, bspw. so:
Java:
System.out.println("Geben Sie die Anfangszahl ein:");
int anfangsZahl = scan.nextInt();

Dann kannste die Variable super benutzen.

Warum deine Variable nicht initialisiert wird... nun sie wird eben nicht initialisiert, du deklarierst lediglich dass es sie gibt.
 
Nur Klassenveriablen werden automatisch initialisiert, alle lokalen Variablen musst Du explizit initialisieren. Zur Ausführung des Bytecodes durch die JVM (Java Virtual Maschine) sollten die Variablenwerte anfangwert und endwert bekannt sein, damit der Vergleich "anfangszahl <= endzahl" evaluiert werden kann. Also, initialisiere deine zwei Variablen und der Compiler wird sich auch nicht mehr beschweren.
 
Zuletzt bearbeitet:
Hallo, direkt mal eine Frage von mir hinterher:

Deklariert man nicht günstigerweise immer direkt einen Wert zu einer Variablen?

also quasi "nicht" zwingend, aber günstigerweise um Fehler abzufangen:
Java:
int anfangwert = 0,
endwert = 0;

Damit hab ich das Problem doch quasi schon aus der Welt geschafft, indem ich mir solch eine Programmierung angewöhne... oder wäre der Fehler deswegen dann auch passiert?

Das Problem dann noch:
Die Schleife wäre nach einem Durchgang halt abgebrochen, weil anfang <= endwert ist.

Oder kämen trotzdem Fehler, weil scan.nextInt() nicht an eine Variable zugewiesen worden ist...
 
Das würde einen Fehler vermeiden.. ABER: Du würdest, wenn du nicht aufpasst, vllt nicht erkennen, dass dein Wert gar nicht eingelesen wird.

Eine Funktion mit Rückgabewert aufzurufen, ohne den Wert einer Variablen zuzuweisen, geht und wirft keinen Fehler.

Deklariert man nicht günstigerweise immer direkt einen Wert zu einer Variablen?

Fachsprachlich besser: Initialisiert man nicht günstigerweise direkt bei der Deklaration?
 
Zuletzt bearbeitet:
eine Variable benötigt immer einen Wert().
Zu unterscheiden ist in Java halt, um Welchen Typ einer Variable es sich handelt.
Klassen - oder auch Instanzvariablen benötigen keinen expliziten Wert, da diese bei der initialisierung einen defaultWert bekommen. Bei Integer zum Beispiel die 0.

Lokale Variablen haben diesen "Luxus" nicht und sollten daher immer bei der Erstellung befüllt werden.

Warum "Luxus"?...nun es ist auch bei Instanzvariablen nicht verkehrt, einen Initialisierungswert zuzuweisen.
Dadurch wird der Code besser lesbar und du bist dir im klaren darüber, welcher Wert eigentlich in deinen Variablen steckt.

so loong Vanny
 
huch xD
naja mein Fehler xD, meinte int aber ein gutes Beispiel für den Ratschlag auch Instanzvariablen zu initialisieren 😛
 

Zurück
Oben