PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Findet Variabel nicht


Gast
2004-03-08, 16:15:04
Ok ich habe ein Programm mit einer main und einer anderen Methode z.b.:


public class test{

public static void main(String args[]){
String s = "Hallo!";
printhallo();
}


public static void printhallo(){
System.out.println(s);
}

}


Die eine Methode soll die Variable der anderen benutzen können, da sie ja beide public sind!
Aber er sagt immer variable s cannot resolve symbol :(
Was mache ich falsch?

Godlike
2004-03-08, 17:22:47
Ahm, dei Variable muss public sein, nicht die Funktionen. Wenn die Funktionen public sind, kann man von anderen Klassen auf sie zugreifen.

Lösung wär (ohne Test):

public class test
{
public String s;

public static void main(String args[])
{
s = "Hallo!";
printhallo();
}


public static void printhallo()
{
System.out.println(s);
}

}

HellHorse
2004-03-08, 17:29:50
Aaalso:
Die methoden sind zwar public, nicht aber s. s ist lokale variable in main, und davon sieht printhallo (zum Glück) nichts. Du kannst mehrere Sachen machen.
1. s als Parameter übergeben (sinnvoll)

public class test{

public static void main(String args[]){
String s = "Hallo!";
printhallo(s);
}


public static void printhallo(String s){
System.out.println(s);
}

}


2. eine Klassenvaiable einführen. Das ist in diesem Fall zwar nicht sinnvoll, aber gehen tut's trotzdem. Da main und printhallo in der gleichen Klasse sind, können wir das Ding private machen. Da main und printhallo static sind, muss s auch static sein, sollen es die beiden sehen können.

public class test{

private static String s

public static void main(String args[]){
s = "Hallo!";
printhallo();
}


public static void printhallo(){
System.out.println(s);
}

}


P.S.:
Godlike war schneller :(

Godlike
2004-03-08, 18:10:14
Original geschrieben von HellHorse
Godlike war schneller :(


HrrrHrrrr, jaja gegen Gott ist kein Kraut gewachsen ;)

HellHorse
2004-03-08, 19:09:28
Original geschrieben von Godlike
HrrrHrrrr, jaja gegen Gott ist kein Kraut gewachsen ;)
Wie es scheint doch. ;)
Bei deinem Beispielcode ist s eine Instanzvaribale. Kassenmethoden (die static methoden) können darauf nicht zugreiffen. Kompiliert also nicht.

Godlike
2004-03-08, 22:52:28
Original geschrieben von HellHorse
Wie es scheint doch. ;)
Bei deinem Beispielcode ist s eine Instanzvaribale. Kassenmethoden (die static methoden) können darauf nicht zugreiffen. Kompiliert also nicht.

Aha, Gotteslästerung...

Na hast recht, i geb mi geschlagen :)