public static double[][][] NAME() nur per RETURN Wertrückgabe möglich?

Status
Nicht offen für weitere Antworten.

-horn-

Bekanntes Mitglied
moien,

ja, ich mal wieder :) und wie immer mit einer frage.
ich lasse ein paar berechnungen in "public static double[][][] NAME()" berechnen und mir ist da was komisches aufgefallen und vielleicht könnt ihr mir das erklären.

ich habe in der main ein array ARRAY1 deklariert und die [0][] ebene gefüllt und dem rest zwar deklariert, aber nicht sinnvoll gefüllt, weil ich das in dem folgenden NAME() machen lasse.
aus diesen NAME(), ist eine rekursion, lasse ich aber andere dinge per return ausgeben und speichere die in einem noch ganz anderem array.

wenn ich aber nach dem NAME() mir dann das ARRAY1 angucke, dann ist das nicht nur wie ich s eigentlich erwartet hatte nur in [0][] gefüllt, sondern es sind nun auch in [1 bis n][] die ganzen indizes gefüllt. wie kann das sein? ich dachte, die variablen innerhalb der NAME() seien von aussen nicht sichtbar und sind nur innerhalb dr klammer-blöcke definiert?

ich hab nun mehrmals über meinen code geguckt, aber ich kann nicht ermittel, woher das ARRAY1 nun befüllt wurde.

grüße, Andreas
 
S

SlaterB

Gast
andere können das natürlich, ohne auf deinen Code zu schauen (Achtung, versteckter Hinweis)
 

-horn-

Bekanntes Mitglied
moien,

andere können das natürlich, ohne auf deinen Code zu schauen (Achtung, versteckter Hinweis)

es geht mir nicht um meinen frickelcode, sonst hätte ich den mitgepostet, sondern um die sichtbarkeit von deklarierten variablen innerhalb und ausserhalb von diesen "public static double NAME()".

Wenn du dieses Array übergibst (oder es statisch ist) wirken sich alle
Änderungen auf dieses Array sofort aus.

wenn ich also so was in der main habe habe

ARRAY1
NAME(ARRAY1)

und im NAME() was mit dem ARRAY passiert, dann wird das auch mit in die main zurückgegeben und nachher wird das auch in ARRAY1, was noch in der main war und in der main nix mit passierte, auch von dem ARRAY1, was man an NAME() schickte und dort drin mit was gemacht wurde, beeinflusst?

grüße, Andreas
 

Leroy42

Top Contributor
...
und im NAME() was mit dem ARRAY passiert, dann wird das auch mit in die main zurückgegeben und nachher wird das auch in ARRAY1, was noch in der main war und in der main nix mit passierte, auch von dem ARRAY1, was man an NAME() schickte und dort drin mit was gemacht wurde, beeinflusst?

Watt'n datt für'n Deutsch? :shock: ;(


...dann wird das auch mit in die main zurückgegeben...

Es wird nicht zurückgegeben sondern es wird überall auf
dasselbe Objekt zugegriffen.
 

-horn-

Bekanntes Mitglied
Watt'n datt für'n Deutsch? :shock: ;(
sorry :(

[/QUOTE]
Es wird nicht zurückgegeben sondern es wird überall auf
dasselbe Objekt zugegriffen.[/QUOTE]

und wie löse ich das, dass ichhalt NICHT überalle auf das selbe objekt zurückgreife? ich brauche keine veränderungen in allen variablen selben namens, sondern nur in dem bereich, wo ich damit was mache und dann weitergebe (da ich ja rekursionsebenen habe)

grüße, Andreas
 

-horn-

Bekanntes Mitglied
Dann legst du innerhalb der Methoden eben
neue Arrays an und kopierst die notwendigen Teile.

also zum beispiel:
Java:
public class finder {
    public static double[][][] bisection(double[] ARRAY1){
    double[] ARRAY2 = new double[n];
                ARRAY2 = ARRAY1;
    }
}

das problem ist nur, dass ich aus diesen klassen wieder rekursionlevel tiefer muss und ich diese klasse dann erneut aufrufe und damit ja mein problem irgendwie nicht löse, da ich ja dann wieder ARRAY2 dort habe. da ich das variable halten muss kann ich ja nicht ARRAYn+1 machen.
oder seh ich das falsch?

grüße, Andreas
 

Leroy42

Top Contributor
also zum beispiel:
Java:
public class finder {
    public static double[][][] bisection(double[] ARRAY1){
    double[] ARRAY2 = new double[n];
                ARRAY2 = ARRAY1;
    }
}

Durch

ARRAY2 = ARRAY1

wird auch keine Kopie durchgeführt sondern nur die Lokale Variable ARRAY2
auf dasselbe Objekt verwiesen wie ARRAY1

(Außerdem sollte man Variablennamen nicht mit Großbuchstaben beginnen lassen)
 

-horn-

Bekanntes Mitglied
moien,

also dann die werte entweder kopieren, zum beispiel mit System.arraycopy(testWert, 0, Kopie, 0, testWert.length), oder mit einer schleife umfüllen?

grüße, Andreas
 

-horn-

Bekanntes Mitglied
moien,

da bin ich wieder.
ich hab das, was ihr mir sagtet, natürlich einmal getestet. das ist mein einfaches beispiel.

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sichtbarkeit;

/**
 *
 * @author Andreas
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        double[][] array1 = new double[3][5];
        for(int i=0; i<array1[0].length; i++){
            array1[0][i] = (double) i;
        }
        
        for(int i=0; i<array1.length; i++){
            for(int j=0; j<array1[0].length; j++){
                System.out.print(array1[i][j]+";");
            }
            System.out.println();
        }
        System.out.println();

        pass.through(array1);

        for(int i=0; i<array1.length; i++){
            for(int j=0; j<array1[0].length; j++){
                System.out.print(array1[i][j]+";");
            }
            System.out.println();
        }
    }

}


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sichtbarkeit;

/**
 *
 * @author Andreas
 */
public class pass {
    public static double through(double[][] array1){
        double[][] array2 = new double[3][5];

        array2 = array1.clone();
                    
        for(int i=0; i<array2[1].length; i++){
            array2[1][i] = (double) i*2;
        }

        return 1;
    }

}
und war überrascht, das sowohl das System.arraycopy als auch das clone() mein problemnicht behoben.

ich habe dann also folgendes gefunden.
Bei Arrays von Objekten und somit auch geschachtelten Arrays ist zu beachten, dass die Arrays sowohl bei Object.clone() als auch bei System.arraycopy() flach kopiert werden, d. h., es werden nur die Objektreferenzen kopiert und nicht die Objekte selbst.
Kopieren von Arrays

also hilft mir da snicht auch wirklich weiter :(
 

Schandro

Top Contributor
benutz das hier zum kopieren des Arrays:
Java:
        for(int i=0; i<array1.length; i++){
            for(int j=0; j<array1[i].length; j++){
				array2[i][j] = array1[i][j];
			}
		}
 

Schandro

Top Contributor
das hatte ich gleich zu anfang probiert, ist aber das gleiche ergebniss :(.
Komisch, bei mir funktionierts damit. Hier der komplette Code dazu:
Java:
/**
 *
 * @author Andreas
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        double[][] array1 = new double[3][5];
        for(int i=0; i<array1[0].length; i++){
            array1[0][i] = (double) i;
        }

        for(int i=0; i<array1.length; i++){
            for(int j=0; j<array1[0].length; j++){
                System.out.print(array1[i][j]+";");
            }
            System.out.println();
        }
        System.out.println();

        pass.through(array1);

        for(int i=0; i<array1.length; i++){
            for(int j=0; j<array1[i].length; j++){
                System.out.print(array1[i][j]+";");
            }
            System.out.println();
        }
    }

}

class pass {
    public static double through(double[][] array1){
        double[][] array2 = new double[3][5];

        for(int i=0; i<array1.length; i++){
            for(int j=0; j<array1[i].length; j++){
				array2[i][j] = array1[i][j];
			}
		}

        for(int i=0; i<array2[1].length; i++){
            array2[1][i] = (double) i*2;
        }

        return 1;
    }
}
Bei mir wird 2 mal dasselbe ausgegeben
 

-horn-

Bekanntes Mitglied
moien,

echt? zweimal das selbe?
ich raffe garnichts mehr! ich mache bei solchen sachen immer ein cleaning vorher und build das ding dann neu. ich nutze netbeans, ich hoffe nicht, dass sich das irgendwie verstellt hat! :(.
 

-horn-

Bekanntes Mitglied
moien,

ich hab leider immernoch keinen weg gefunden, wie ich "neue" unabhängige objekte, aber mit den selben werten eines anderen objektes erzeugen kann.

würde eine einfache rechenoperation da auswirken, also wenn ich

ARRAY2[0] = ARRAY1[0]*1 oder ARRAY2[0] = ARRAY1[0]+0 einbauen würde da als "kopierer" fungieren? oder würde dann wieder im original ARRAY1 diese änderung auch vorgenommen werden?

grüße, Andreas
 
Zuletzt bearbeitet:

-horn-

Bekanntes Mitglied
Sicher!

Du weißt ja einem Element von Array1 etwas zu.

moien,

ach mist, ich habe gerade erst gesehen, dass ich das falsch rum hatte :(. also ich will in das neue ARRAY2 werte aus dem original ARRAY1 kopieren, aber nicht so auf ARRAY1 verweisen, dass diese werte dort auch verändert werden können. die sollen erstmal statisch bleiben.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
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
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
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
S Frage zu public static Java Basics - Anfänger-Themen 29
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
Hamstinator public static. Gute Idee? Java Basics - Anfänger-Themen 6
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
G Vor oder hinter public static void main. ? Java Basics - Anfänger-Themen 8
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
A die public static void main ? Java Basics - Anfänger-Themen 3
V public nachträglich in public static umwandeln /JFormDesigne Java Basics - Anfänger-Themen 5
N public static void main(String args[]) Java Basics - Anfänger-Themen 6
P Was genau bedeutet "public static void main(String[] ar Java Basics - Anfänger-Themen 10
J public static void main? Java Basics - Anfänger-Themen 5
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
N public static void Java Basics - Anfänger-Themen 18
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
B public static void main (String[] args) ??? Java Basics - Anfänger-Themen 2
G getParameter in public static void main 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
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
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
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
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
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
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
N Java UML: Eine Frage zu public-Variablen Java Basics - Anfänger-Themen 19
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
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
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
F public variable erstellen, & darauf zugreifen Java Basics - Anfänger-Themen 12
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
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
R jLabel lässt sich nicht public setzen?? Java Basics - Anfänger-Themen 15
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
H eine als public deklariete Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
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
A kein zugriff auf variable trotz public? Java Basics - Anfänger-Themen 3
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 (Anfängerproblem) Problem mit dem Aufruf von public-Methoden Java Basics - Anfänger-Themen 3
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
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

Ähnliche Java Themen

Neue Themen


Oben