Zwei double Arrays miteinander vergleichen

Hallo

Ich habe zwei Methoden, beide geben als Rückgabewert double[] Arrays zurück:

public double[] generireAbstand()
public double[] generireWinkel()

Ich möchte jetzt in einer neuen Methode die beiden double Array der jeweiligen Methoden miteinander vergleichen.

public void Treffer(){
for(int i=0;i

Hi Gandhi,

for(int i=0;i

da kommst du sicher selbst drauf, wenn ich dich frage, wo das
i in der Schleife bleibt?

Hallo
Ich weiß ehrlich gesagt nicht wo das i hinkommt.
Also so sehen meine beiden Methoden aus:

public double[] generireWinkel(){
for (int i=0;i

Hi Gandhi,

> public double[] generireWinkel() {  
> for (int i=0;i

Was bezweckst du mit der letzten oben zitierten Zeile? Woher kommt überhaupt "Winkel", woher n? Du füllst das GANZE Array Winkel, also alle Index.Positionen im Endeffekt mit (nLaenge/2)\*Math.sin(n) - die Schleife ist also sinnlos. Ich hätte sowas erwartet:



    
    public double[] generiereWinkel(int nCount) {
     double[] returnWinkel = new double[];
     for ( int i = 0; i 
    
    Außerdem springst du eh im ersten Schleifendurchlauf schon raus. In der zweiten Funktion dasselbe.
    
    
        
        
        
        > public void Treffer(){  
        > for(int i=0;i
        
        
        Ich vermute, du meinst sowas:
        
        
            
            public void Treffer() {
             double[] abstaende = generiereAbstand(n);
             double[] winkel = generiereWinkel(n);
             for(int i=0;i
            
            Immer noch das Problem, woher "n" kommt. 
            
            Mir scheint aber, dir fehlen Grundlagen, die du dir erstmal erlesen solltest, bevor du weiter im Nebel rumstocherst.
            
            Alles Gute wünscht
            ... Michael

Hallo
Tut mir leid,es war mein Fehler,dass ich nicht das komplette Code mit gepostet habe.

Was bezweckst du mit der letzten oben zitierten Zeile? Woher
kommt überhaupt „Winkel“, woher n? Du füllst das GANZE Array
Winkel, also alle Index.Positionen im Endeffekt mit
(nLaenge/2)*Math.sin(n) - die Schleife ist also sinnlos. Ich
hätte sowas erwartet:

Hoffe dies beantwortet deine Fragen, woher n und Winkel kommen:
public class Pi
{
private int n, nLaenge,dAbstand;
private Random zufallWinkel, zufallX;
private double[] Winkel, X;
private boolean treffer[];

/**n steht für die Anzahl der Nadelwuerfe
* nadel für die Nadel laenge
* dAbstand Abstand zwischen den zwei Parallen, muss doppelt so lang wie Nadellänge sein
*/
public Pi(int n, int nadel){
this.n=n;
nLaenge=nadel;
dAbstand=2*nLaenge;
zufallWinkel= new Random();
zufallX= new Random();
Winkel= new double[n];
X= new double [n];
treffer= new boolean [n];
}

Außerdem springst du eh im ersten Schleifendurchlauf schon
raus. In der zweiten Funktion dasselbe.

Was ich nicht verstehe, wieso ich in der ersten,zweiten Schleife raus springe?

Mir scheint aber, dir fehlen Grundlagen, die du dir erstmal
erlesen solltest, bevor du weiter im Nebel rumstocherst.

Ich bin noch ein Java Anfänger. Kann nicht sagen, dass ich alle Grundlagen beherrsche, aber gewiss einige.
Was soll die Klasse Pi machen: Also ich möchte das von "Georges Louis Leclerc de Buffon entwickelte Näherungsverfahren verwenden, mit dem man Pi nähren kann. http://www.wiwi.uni-bielefeld.de/StatCompSci/lehre/m…

Danke
Gruß Gandhi

Hallo,

Außerdem springst du eh im ersten Schleifendurchlauf schon
raus. In der zweiten Funktion dasselbe.

Was ich nicht verstehe, wieso ich in der ersten,zweiten
Schleife raus springe?

ich zitiere:

public double[] generireWinkel() {
 for (int i=0;i

Und Arrays.fill füllt den ersten Wert, also (nLaenge/2)\*Math.sin(0) in alle Felder des Arrays.

Alles Gute wünscht
... Michael

Das Argument von sin ist wohl nicht immer „0“.

 int index= zufallWinkel.nextInt(180);
 Arrays.fill(Winkel, (nLaenge/2)\*Math.sin(index));

Nach meinem Verständnis kann „index“ auch andere Werte als „0“ haben.
Und vielleicht könntest du für „nLaenge/2“ eine eigene Variable spendieren,
dann muß das nicht mit jedem Schleifendurchlauf neu berechnet werden - auch wenn es in diesem speziellen Fall ja auch nie mehr als einer sind :wink:

Gruß
Axel

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Tonitaisk,

Das Argument von sin ist wohl nicht immer „0“.

int index= zufallWinkel.nextInt(180);
Arrays.fill(Winkel, (nLaenge/2)*Math.sin(index));

stimmt, da habe ich nicht aufgepasst und im Kopf die falsche Variable eingesetzt. Darum geht es aber GAR NICHT. SONDERN dass es nur EINEN Wert gibt, weil die Schleife nur einmal durchlaufen wird, und dann mit return abgebrochen wird. Vermutlich falsch Klammersetzung.

Und vielleicht könntest du für „nLaenge/2“ eine eigene
Variable spendieren,

Ich wohl eher nicht, sondern Gandhi :wink:

Alles Gute wünscht
… Michael

Und vielleicht könntest du für „nLaenge/2“ eine eigene
Variable spendieren,

Ich wohl eher nicht, sondern Gandhi :wink:

Ja, sorry - den meinte ich auch :wink: