public variable erstellen, & darauf zugreifen

Fasko

Mitglied
Hallo Leute,

ich experimentiere aktuell ein wenig mit Methoden herum. Das Ziel ist eine Art Taschenrechner mit Funktionen die ich mir teils noch ausdenken will & werde.
Vorweg. Das Programm ist noch (lange) nicht fertig.

Jetzt habe ich eine public array erstellt // werte
Im Hauptprogramm möchte ich über eine Methode Werte im Array zu speichern... Eclipse will das Programm in seiner derzeitigen Form jedoch nicht compilen.

Java:
import java.io.*;
import java.util.*;

public class J08_AE {
	
	public  double[] werte = new double[2];

    /**
     * @param args
     */
    public static void main(String[] args) throws IOException
    {
        // TODO Auto-generated method stub
        
        
        
        String einlesen;
        
        int zahlBuf;
        Random generator = new Random();
        int oGrenze = 0;
        int uGrenze = 0;
        int text;
        
        
        texte(0);
        
        texte(1);
        //einlesen = leser();
        zahlBuf = Integer.parseInt(leser());
        System.out.println(zahlBuf);
        speicher(0,zahlBuf);
        
        texte(2);
        zahlBuf = Integer.parseInt(leser());
        System.out.println(zahlBuf);
        speicher(1,zahlBuf);
        
        
   //     System.out.println(werte[1]);
        
            
        
        

    }
    
    public static double speicher (int i, int zahl)
    {
      // public  double[] werte = new double[2];
        werte[i] = zahl;
        // System.out.println("Index:" + i);
        // System.out.println("Zahl:"+ zahl);
        // System.out.println(werte[i]);
        return 0;
    }
    
    public static String leser ()throws IOException
    {
        BufferedReader stupid = new BufferedReader (new InputStreamReader(System.in));
        String strBuf = stupid.readLine();
        return strBuf;
    }
    
    public static void texte (int auswahl)
    {
    System.out.println("Test");
    
    // Deklaration
    
    
    switch (auswahl)
    {
    case 0:
        System.out.println("Willkommen beim Dschinni-Rechner!");
        break;
    case 1:
        System.out.println("Geben Sie bitte die Obergrenze ein");
        break;
    case 2:
        System.out.println("Geben Sie bitte die Untergrenze ein");
        break;
    case 3:
        System.out.println("Durchschnitt");
        break;
    case 4:
        System.out.println("Maximum");
        break;
    case 5:
        System.out.println("Minimum");
        break;
    case 6:
    	System.out.println("Addieren = 1\tSubtrahieren = 2\tMultiplizieren = 3\tDividieren = 4");
        break;
        
        default:
            System.out.println("Ach leck mich doch! Dafür werde ich nicht bezahlt!");
        
        
    }

    }

}

Wo liegt mein (Denk-)Fehler?

// Wie mache ich diese aufklappbaren Dinger... :D


Gruß,

Fasko
 
Zuletzt bearbeitet von einem Moderator:

Crian

Top Contributor
mit [ JAVA ] ... [ /JAVA ] ohne die Leerzeichen darin kannst du deinen Code hübscher darstellen.


Eclipse will das Programm in seiner derzeitigen Form jedoch nicht compilen.

Da wäre es fein, die Fehlermeldung mit anzugeben.


Ich habs mal in Eclipse kopiert. Die Meldung "change modifiert of 'werte' to static" sollte aussagekräftig sein?


Ich würde dir raten, von statischen Methoden in der Regel die Finger zu lassen, es sei denn du hast einen guten Grund dafür (Singleton o.ä.). Im Moment betreibst du da prozedurale Programmierung.


[c]public double[] werte = new double[2];[/c] halte ich auch für keine gute Idee. Sowas sollte man privat halten und höchstens über getter / setter zur Verfügung stellen.


Namen sollten sprechend sein. J08_AE ist alles andere.
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
Du willst von einer Klassenmethode auf eine Instanzvariable zugreifen. Geht natürlich nicht. Entweder, du "entstaticisierst" die Methode (dabei kannst du sie natürlich aus der main nichtmehr ausrufen), oder du machst die variable static.
 

Crian

Top Contributor
Vorschlag (man kann immer noch über viiieles dabei reden)

Java:
package forumProblems;

import java.io.*;
import java.util.*;

public class J08_AE {

    private double[] werte = new double[2];

    public static void main(String[] args) throws IOException {
        new J08_AE();
    }

    public J08_AE() throws IOException {
        String einlesen;

        int zahlBuf;
        Random generator = new Random();
        int oGrenze = 0;
        int uGrenze = 0;
        int text;

        texte(0);

        texte(1);
        // einlesen = leser();
        zahlBuf = Integer.parseInt(leser());
        System.out.println(zahlBuf);
        speicher(0, zahlBuf);

        texte(2);
        zahlBuf = Integer.parseInt(leser());
        System.out.println(zahlBuf);
        speicher(1, zahlBuf);

        // System.out.println(werte[1]);

    }

    private double speicher(int i, int zahl) {
        // public double[] werte = new double[2];
        werte[i] = zahl;
        // System.out.println("Index:" + i);
        // System.out.println("Zahl:"+ zahl);
        // System.out.println(werte[i]);
        return 0;
    }

    private String leser() throws IOException {
        BufferedReader stupid = new BufferedReader(new InputStreamReader(
                System.in));
        String strBuf = stupid.readLine();
        return strBuf;
    }

    private void texte(int auswahl) {
        System.out.println("Test");

        // Deklaration

        switch (auswahl) {
            case 0:
                System.out.println("Willkommen beim Dschinni-Rechner!");
                break;
            case 1:
                System.out.println("Geben Sie bitte die Obergrenze ein");
                break;
            case 2:
                System.out.println("Geben Sie bitte die Untergrenze ein");
                break;
            case 3:
                System.out.println("Durchschnitt");
                break;
            case 4:
                System.out.println("Maximum");
                break;
            case 5:
                System.out.println("Minimum");
                break;
            case 6:
                System.out
                        .println("Addieren = 1\tSubtrahieren = 2\tMultiplizieren = 3\tDividieren = 4");
                break;

            default:
                System.out
                        .println("Ach leck mich doch! Dafür werde ich nicht bezahlt!");
        }
    }

}

Jetzt ist nur noch main statisch, und alles außer dem Konstruktor ist nun privat. Außerdem ist es ausführbar und ähnelt deinem Code noch einigermaßen.
 

Fasko

Mitglied
Crian, ich habe deinen Code mal übernommen.
Da kommt die Meldung "Return Type for the Methode is missing"

Vielleicht übersehe ich hier eine Kleinigkeit... Java-Anfänger :rtfm:
 

AmunRa

Gesperrter Benutzer
Bist du dir sicher, dass dein Java-File auch den richtigen Namen hat, bzw. der Konstruktor den Namen der Klasse hat und nicht irgendwo ein GROSZ/klein Schreibfehler darin ist.
 

Crian

Top Contributor
Hast du das mit copy & paste als ganzes gemacht? Oder nur Teile übernommen? Im letzteren Fall kann natürlich irgendwas nicht zusammen passen.
 

Crian

Top Contributor
meinst du

[JAVA=10] public static void main(String[] args) throws IOException {
new J08_AE();
}[/code]

?

Da wird ein Objekt dieser Klasse erstellt. Damit ist das ganze Objektorientierter. Alles weitere passiert dann im aufgerufenen Konstruktor

[JAVA=14] public J08_AE() throws IOException {[/code]
 

akimoon

Aktives Mitglied
Ich schreib es zwar ungern, aber vielleicht wäre erstmal ein bisschen Grundlagen-Schulung nötig für das Projekt.
Was ist ein Konstruktor? Was sind statische Methoden und wofür verwendet man sie? Vielleicht täuscht mich mein Eindruck ja auch, aber ich glaube, Fasko kann damit noch nicht wirklich viel anfangen und weiß daher auch nicht, woher der Fehler nun wirklich kam?

Grundlegend ein kleiner Hinweis zu statischen & instanz-Variablen von mir:

Variablen, die du mit "static" deklarierst, gehören zu einer Klasse, und können auch direkt über den Klassennamen angesprochen werden. Zum Beispiel der Wert "kaufpreis" der Klasse "MercedesSLK" könnte über MercedesSLK.kaufpreis abgerufen werden.

Sollte es nun allerdings unterschiedliche Preise geben, wäre es gut wenn jeder MercedesSLK seinen eigenen Preis hätte. Hierzu wird das Schlüsselwort "static" weggelassen. Somit gehört jeder Kaufpreis zu dem jeweiligen MercedesSLK. Einen MercedesSLK kann man über "new MercedesSLK();" anlegen.

Falls du dies bereits wusstest.. überles es einfach nachträglich ;)
 

Fasko

Mitglied
Ohh... da hatte ich doch etwas mit dem Namen übersehen :oops:

Generell bin ich schon im Besitz von Programmierkenntnissen. Bis vor zwei Jahren habe ich noch schulischbedingt mit C# gearbeitet (zwei Jahre Erfahrung^^). Es sind nicht die herausragenden Kenntnisse, die ich dort erworben habe, aber alles habe ich nun auch nicht vergessen.

So, nun will ich mich (auch schulisch bedingt) mit Java beschäftigen. :lol:


Ich habe aus meiner damaligen Zeit noch etwas mit "get- & set-Methoden" im Kopf. Aber ich weiß nicht mehr genau was..... ;( Mein Ziel ist es unter anderem, später auf die in einer Methode gespeicherten Daten (im Array) wieder zugreifen zu können.

MfG,

Fasko
 

Volvagia

Top Contributor
Ich weiß jetzt nicht, ob das eine Frage war, aber Crian hat dir ja schon einen Setter gepostet:

Java:
private double speicher(int i, int zahl) {
	// public double[] werte = new double[2];
	werte[i] = zahl;
	// System.out.println("Index:" + i);
	// System.out.println("Zahl:"+ zahl);
	// System.out.println(werte[i]);
	return 0;
}

oder gekürzt:

Java:
private void setZahl(double value, int field) {
	werte[field] = value;
}

Und dazu passend ein getter:

Java:
private double getZahl(int field) {
	return(werte[field]);
}

Wenn du die Sichtbarkeit ausdehnst, kannst du sogar von anderen Klassen darauf zugreifen. Arrays soll man sowieso niemals übergeben (lt. Findbugs), ich weiß aber nicht mehr warum nicht.
 

Crian

Top Contributor
Wenn man das von außen nutzen will, sollte es natürlich wieder "public" sein.

Und es gibt da Namenskonventionen.
Normale Getter lauten mit getVariablenname() und die Setter setVariablenname(). Bei boolschen Variablen hingegen fängt man mit is... oder has... an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
H eine als public deklariete Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
A kein zugriff auf variable trotz public? Java Basics - Anfänger-Themen 3
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
Say public/default Interface Java Basics - Anfänger-Themen 9
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
Denix The public type Main must be defined in its own fileJava(16777541) Java Basics - Anfänger-Themen 13
melaniemueller Datenkapselung Sichtbarkeit public Java Basics - Anfänger-Themen 4
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
G Klassen Mit fremder Klasse auf public Methode zugreifen Java Basics - Anfänger-Themen 23
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
L RSA Public Key einlesen Java Basics - Anfänger-Themen 0
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
I Methoden public void paintComponent (Graphics g) Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
K modifier public Java Basics - Anfänger-Themen 3
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
T Java Code Hilfe - public void xxx() Java Basics - Anfänger-Themen 2
T public void - Problem Java Basics - Anfänger-Themen 10
B public/private nur 1x schreiben Java Basics - Anfänger-Themen 3
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
N Java UML: Eine Frage zu public-Variablen Java Basics - Anfänger-Themen 19
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
T public-private problem Java Basics - Anfänger-Themen 5
J public enum? in Java Java Basics - Anfänger-Themen 9
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
B main methode ohne public Java Basics - Anfänger-Themen 5
W Frage public protected konstruktor Java Basics - Anfänger-Themen 6
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
S Frage zu public static Java Basics - Anfänger-Themen 29
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
O Was bedeutet public class value? Java Basics - Anfänger-Themen 3
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
K Kapselung public / private verständis problem Java Basics - Anfänger-Themen 17
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
K OOP Attribute von Klasse in die public class übertragen? Java Basics - Anfänger-Themen 7
T Kapselung: public-Methoden in protected-Klassen Java Basics - Anfänger-Themen 3
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
X enum Fehlermeldung "The public type Day must be defined in its own file" Java Basics - Anfänger-Themen 8
B Public boolean einfügen Java Basics - Anfänger-Themen 12
R jLabel lässt sich nicht public setzen?? Java Basics - Anfänger-Themen 15
Hamstinator public static. Gute Idee? Java Basics - Anfänger-Themen 6
-horn- public static double[][][] NAME() nur per RETURN Wertrückgabe möglich? Java Basics - Anfänger-Themen 20
S Public-Klassen und Dateien Java Basics - Anfänger-Themen 5
StickToFreak Fehler mit public class Java Basics - Anfänger-Themen 13
K konstruktur als public definieren Java Basics - Anfänger-Themen 11
StickToFreak public class problem ôÔ Java Basics - Anfänger-Themen 3
G field public/private wann Java Basics - Anfänger-Themen 11
T Konstruktor mit oder ohne public-Bezeichner? Java Basics - Anfänger-Themen 4
T Geht so was? public void verkaufe (<X implements Produkt& Java Basics - Anfänger-Themen 8
P immer "public class". ? Java Basics - Anfänger-Themen 4
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
C public static void main(String[] args) Java Basics - Anfänger-Themen 6
D Frage zu public static void main. Java Basics - Anfänger-Themen 4
J public class Java Basics - Anfänger-Themen 15
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
G Vor oder hinter public static void main. ? Java Basics - Anfänger-Themen 8
G (Anfängerproblem) Problem mit dem Aufruf von public-Methoden Java Basics - Anfänger-Themen 3
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
D Zugriff auf attribut anderer Klasse privat/public? Java Basics - Anfänger-Themen 9
B Warum manchmal public class und manchmal nur class Java Basics - Anfänger-Themen 3
A Javadoc nur bei public Klassen? Java Basics - Anfänger-Themen 3
T rotes herz public void paint(Graphics g) Java Basics - Anfänger-Themen 2
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
P public enum ";"expected Java Basics - Anfänger-Themen 7
B public und protected Java Basics - Anfänger-Themen 11
G <identifier> expected bei public void final Java Basics - Anfänger-Themen 3
G GUI Controls private oder public Java Basics - Anfänger-Themen 6
G Variablen public oder private? Java Basics - Anfänger-Themen 9
R public Klassen Java Basics - Anfänger-Themen 12
I public Verständnisfrage Java Basics - Anfänger-Themen 5
S private public Java Basics - Anfänger-Themen 5
R private / public Frage Java Basics - Anfänger-Themen 7
F Warum sind Interface-Methoden public? Java Basics - Anfänger-Themen 19
C public void keyPressed(KeyEvent e) Java Basics - Anfänger-Themen 2
G Public ,private,protected Java Basics - Anfänger-Themen 1
N public void und verhalten bei return Java Basics - Anfänger-Themen 2
K public boolean contains (Object obj) > true or false Java Basics - Anfänger-Themen 16
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
A public/private/etc. Zusatz weglassen Java Basics - Anfänger-Themen 2
A die public static void main ? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben