array in for-Schleife auslesen?

Status
Nicht offen für weitere Antworten.

Java Student

Mitglied
Hallo,

ich hab' folgendes Problem mit der Ausgabe mehrerer arrays.

In einem Programm werden durch eine for Schleife verschiedene Werte in verschiedene arrays geschrieben.
Nun möchte ich am Schluss des Programms alle im Verlauf der for-Schleife in die arrays geschriebenen Werte ausgeben.

Was muss ich für die zweite for-schleife eingeben, damit alles korrekt ausgeführt wird?


Code:
 public static void main(String[] args) throws IOException
  {
    ...

    for(double i=xmin; i<=xmax; i+=deltax)
    {
      ...
      winkel[j]=xmin;

      ...

      sw[j]=sinus;
      
      ...
      sn[j]=erg; 

      ...
      abs[j]=absfehl;

      rel[j]=(absfehl/sinus);
      
       xmin=(xmin+deltax);
       
       maxj=j;
       j++;
    }//end for
    
    for(int j2=maxj; j<=xmax;j+=deltax)   //???????
   {
     System.out.println(""+winkel[j2]+"\t|  "+sw[j2]+"\t|  "+sn[j2]+"\t|  "+abs[j2]+"\t|  "+rel[j2]);
    }
...


Mfg
 
S

SlaterB

Gast
die erste Schleife ist etwas unverständlich,
die Arrays werden nur über j befüllt?
werden da alle Arrays gleichmäßig befüllt oder in jeder Runde mal das eine/ mal das andere Array?
werden die Arrays an sich von Index 0 aufsteigend bis zum Ende gefüllt oder gibts da Lücken?

ist die Länge der Arrays und damit das Maximum von j vorher bekannt
oder werden da einfach ausreichend große Arrays verwendet die wahrscheinlich nicht ganz voll werden?

j ist jedenfalls ein Index, der immer um +1 ansteigt, der Grundaufbau der zweiten Schleife ist demnach

Code:
for(int j=0 j<maxJ, j++) {
     System.out.println(""+winkel[j]+"\t|  "+sw[j]+"\t|  "+sn[j]+"\t|  "+abs[j]+"\t|  "+rel[j]);
}

maxJ ist entweder z.B. die Länge eines der Arrays (winkel.length)
oder falls vorher nicht so genau bekannt, dann wird in der ersten Schleife mitgezählt,
die Anzahl der Durchläufe/ der Maximalwert von j dort muss dann maxJ sein (machst du ja auch dort)


so, mag sein dass es so nicht geht, aber dann musst du erstmal sagen WARUM der normale Weg nicht geht ;)
 
B

bygones

Gast
Java Student hat gesagt.:
Hallo,

ich hab' folgendes Problem mit der Ausgabe mehrerer arrays.

In einem Programm werden durch eine for Schleife verschiedene Werte in verschiedene arrays geschrieben.
Nun möchte ich am Schluss des Programms alle im Verlauf der for-Schleife in die arrays geschriebenen Werte ausgeben.

Was muss ich für die zweite for-schleife eingeben, damit alles korrekt ausgeführt wird?


Code:
 public static void main(String[] args) throws IOException
  {
    ...

    for(double i=xmin; i<=xmax; i+=deltax)
    {
      ...
      winkel[j]=xmin;

      ...

      sw[j]=sinus;
      
      ...
      sn[j]=erg; 

      ...
      abs[j]=absfehl;

      rel[j]=(absfehl/sinus);
      
       xmin=(xmin+deltax);
       
       maxj=j;
       j++;
    }//end for
    
    for(int j2=maxj; j<=xmax;j+=deltax)   //???????
   {
     System.out.println(""+winkel[j2]+"\t|  "+sw[j2]+"\t|  "+sn[j2]+"\t|  "+abs[j2]+"\t|  "+rel[j2]);
    }
...


Mfg

ich versteh den code nicht so wirklich...
1. double in ner forschleife für einen array ist unsinn - da geht nur int.
2. warum über i laufen, wenn du j als index nimmst ?
3. willst du kontinuierlich füllen oder wie (d.h. die for bedingungen sind mir unklar)

wenn alle arrays gleich lang sind lauf doch einfach von 0 bis zur länge eines arrays. Ansonsten musst du halt gewährleisten, dass deine Parameter (maxj, xmax usw) korrekt sind, was man aber bei dem code nicht als außenstehender sagen kann
 

Java Student

Mitglied
Ok, sorry.
Das mit dem double in der for-Schleife wurde von unserem Professor vorgegeben.

Hier ist der ganze Code:

Code:
import java.io.*;

public class SinusValues
{
  public static void main(String[] args) throws IOException
  {
    double xmin, xmax, deltax,rad=0;         
    int j=0,maxj=0,nval, w=270;
    
    BufferedReader ein = new BufferedReader(new InputStreamReader(System.in));
    print("Geben Sie den Startwinkel ein:");
    xmin = Double.valueOf(ein.readLine()).doubleValue();
    print("Geben Sie den groessten Winkel ein:");
    xmax = Double.valueOf(ein.readLine()).doubleValue();
    print("Geben Sie die Schrittweite ein:");
    deltax = Double.valueOf(ein.readLine()).doubleValue();

    nval=(int)((xmax-xmin)/deltax)+1;  //Größe des arrays
    double[] winkel = new double[nval];
    double[] sw = new double[nval];
    double[] sn = new double[nval];
    double[] abs = new double[nval];
    double[] rel = new double[nval];
    println("Winkel\t|  SinusWerte\t|  SinusNaeherung\t|  FehlerAbsolut\t|  Fehlerrelativ");
    println("------------|------------|-------------|------------|------------\n");
    for(double i=xmin; i<=xmax; i+=deltax)
    {
      double erg=0, bogmas=0, pot=1, fa=1, f=1, altsum=0, vz=1, sinus=0,absfehl=0;
      winkel[j]=xmin;

      rad=Math.toRadians(xmin);     //ab hier Berechnung des Sinuswertes
      sinus=Math.sin(rad);
      sw[j]=sinus;
      
      bogmas=(xmin*Math.PI)/180;     //ab hier Berechnung des ersten Näherungswertes
      erg=(Math.pow(bogmas,pot))/(fa);
          for(int u=0;u<=5;u++)         //weitere 5malige Berechnung der Näherung
           {
             pot+=2;
             fa=fa*(f+1)*(f+2);
             f+=2;
             altsum=erg;
             vz=(Math.sin(Math.toRadians(w)));
             w+=180;
             erg=vz*((Math.pow(bogmas,pot))/(fa));
             erg=altsum+erg;
            }
       sn[j]=erg;                             

       absfehl=Math.abs((sinus-erg));      //Berechnung des AbsolutFehlers
       abs[j]=absfehl;

       rel[j]=(absfehl/sinus);                    //Berechnung des RelativFehlers

       xmin=(xmin+deltax);
       maxj=j;
       j++;
    }//end for
    
    for(int j2=maxj; j<=xmax;j+=deltax)
       {
         System.out.println(""+winkel[j]+"\t|  "+sw[j]+"\t|  "+sn[j]+"\t|  "+abs[j]+"\t|  "+rel[j]);
        }

  }//end main()
  
  public static void println(String hugo)
  {
    System.out.println(hugo);
  }

  public static void print(String hugo)
  {
    System.out.print(hugo);
  }
}
 
B

bygones

Gast
1. deine print / println methode finde ich überflüssig... warum methodenaufruf nur um etwas auf die konsole auszugeben... würde das System.out.println direkt in den code schreiben

Code:
for(double i=xmin; i<=xmax; i+=deltax) 
    { 
      double erg=0, bogmas=0, pot=1, fa=1, f=1, altsum=0, vz=1, sinus=0,absfehl=0; 
      winkel[j]=xmin; 

      rad=Math.toRadians(xmin);     //ab hier Berechnung des Sinuswertes 
      sinus=Math.sin(rad); 
      sw[j]=sinus; 
      
      bogmas=(xmin*Math.PI)/180;     //ab hier Berechnung des ersten Näherungswertes 
      erg=(Math.pow(bogmas,pot))/(fa); 
          for(int u=0;u<=5;u++)         //weitere 5malige Berechnung der Näherung 
           { 
             pot+=2; 
             fa=fa*(f+1)*(f+2); 
             f+=2; 
             altsum=erg; 
             vz=(Math.sin(Math.toRadians(w))); 
             w+=180; 
             erg=vz*((Math.pow(bogmas,pot))/(fa)); 
             erg=altsum+erg; 
            } 
       sn[j]=erg;                              

       absfehl=Math.abs((sinus-erg));      //Berechnung des AbsolutFehlers 
       abs[j]=absfehl; 

       rel[j]=(absfehl/sinus);                    //Berechnung des RelativFehlers 

       xmin=(xmin+deltax); 
       maxj=j; 
       j++; 
    }//end for
ok - was unlogisch ist

1. mit jedem durchlauf erhöhst du j und setzt maxj gleich. D.h. da weder maxj noch j in der schleife irgendwo anders geändert werden ist am schluss j = maxj = xmax

nun kommt dann
Code:
for(int j2=maxj; j<=xmax;j+=deltax)   //??????? 
   { 
     System.out.println(""+winkel[j2]+"\t|  "+sw[j2]+"\t|  "+sn[j2]+"\t|  "+abs[j2]+"\t|  "+rel[j2]); 
    }
da maxj = xmax ist dürfte da gar nix passieren.....

wie gesagt, alle arrays die du füllst sind gleich lang, also würd ich einfach
Code:
for(int j2=0; j<=nval;j++)   //??????? 
   { 
     System.out.println(""+winkel[j2]+"\t|  "+sw[j2]+"\t|  "+sn[j2]+"\t|  "+abs[j2]+"\t|  "+rel[j2]); 
    }
deine arrays haben ja nichs mehr mit der schrittweite zu tun (wenn ich es richtig verstanden habe), da du ja auch mit j einen neuen index einführst und eben von dieser schrittweite delta weggehst
 
S

SlaterB

Gast
da weder maxj noch j in der schleife irgendwo anders geändert werden ist am schluss j = maxj = xmax
j = maxj stimmt, aber mit xmax hat das wenig zu tun ;)
= nval meinst du vielleicht

for(int j2=0; j<=nval;j++)
Vorsicht vor verschiedenen Laufvariablen, j2 != j

-----------

die Verwendung von i ist in der ersten Schleife ziemlich irreführend da i nirgendwo benutzt wird,
stattdessen änderst du minx bei jedem Durchlauf, das ist nicht gut, da hat der Variablenname ja eine andere Bedeutung,
dann doch besser gleich über j laufen und eine andere Variable x verwenden:

Code:
		double x = xmin; // aktueller x-Wert, am Anfang xmin
		for (int j = 0; j < nval; j++) {
			double erg = 0,
				bogmas = 0,
				pot = 1,
				fa = 1,
				f = 1,
				altsum = 0,
				vz = 1,
				sinus = 0,
				absfehl = 0;
			
			winkel[j] = x;

			rad = Math.toRadians(x); //ab hier Berechnung des Sinuswertes
			sinus = Math.sin(rad);
			sw[j] = sinus;

			bogmas = (x * Math.PI) / 180;
			//ab hier Berechnung des ersten Näherungswertes
			erg = (Math.pow(bogmas, pot)) / (fa);
			for (int u = 0;
				u <= 5;
				u++) //weitere 5malige Berechnung der Näherung
				{
				pot += 2;
				fa = fa * (f + 1) * (f + 2);
				f += 2;
				altsum = erg;
				vz = (Math.sin(Math.toRadians(w)));
				w += 180;
				erg = vz * ((Math.pow(bogmas, pot)) / (fa));
				erg = altsum + erg;
			}
			sn[j] = erg;

			absfehl = Math.abs((sinus - erg)); //Berechnung des AbsolutFehlers
			abs[j] = absfehl;

			rel[j] = (absfehl / sinus); //Berechnung des RelativFehlers

			x += deltax; // x erhöhen
		} //end for

		for (int j = 0; j < nval; j++) {
			System.out.println(
				""
					+ winkel[j]
					+ "\t|  "
					+ sw[j]
					+ "\t|  "
					+ sn[j]
					+ "\t|  "
					+ abs[j]
					+ "\t|  "
					+ rel[j]);
		}

wie man sieht ist die zweite Schleife genau wie die erste aufgebaut,
du könntest genausogut die Ausgabe innerhalb der ersten Schleife machen (am Ende)

die Ausgabe der double-Zahlen kann man natürlich noch verschönern,
im Moment sieht es teilweise so aus:
Code:
12.4	|  0.2147353271670632	|  0.2147353271670632	|  0.0	|  0.0
21.8	|  0.3713678355502348	|  0.3713678355502348	|  0.0	|  0.0
31.200000000000003	|  0.5180270093731302	|  0.5180270093731303	|  1.1102230246251565E-16	| [..]
;)
 

Java Student

Mitglied
Danke für eure Hilfe! Jetzt klappts endlich!
Mit der Verschönerung der Ausgabe fange ich jetzt an.

Das mit der print Methode kommt auch von unserem Professor. Er meint, damit muss man nicht so viel schreiben. Zwar lohnt's sich hier nicht besonders, da es hier nicht viele Ausgaben gibt, aber ich implementiere es mal lieber.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0
D Array mit while-schleife Java Basics - Anfänger-Themen 12
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
S Array mit for-Schleife besetzen Java Basics - Anfänger-Themen 7
T Methode um Array mit for-each-Schleife auszulesen Java Basics - Anfänger-Themen 7
D Doppelte For Schleife / Array Java Basics - Anfänger-Themen 3
TimoN11 Array -> Schleife wieder von vorne durchlaufen lassen Java Basics - Anfänger-Themen 1
T Variable in for Schleife ansprechen ohne Array ? Java Basics - Anfänger-Themen 25
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
I Java zweidimensionales array befüllen mit for-schleife Java Basics - Anfänger-Themen 2
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
G while schleife mit array Java Basics - Anfänger-Themen 12
krgewb Erweiterte for-Schleife für 2D-Array Java Basics - Anfänger-Themen 4
B Array via Schleife mit ungeraden bzw geraden Zahlen füllen Java Basics - Anfänger-Themen 7
N Anfang eine Array Schleife finden Java Basics - Anfänger-Themen 18
N Methode mit While-Schleife und If-Bedingung und Array-Initialisierung Java Basics - Anfänger-Themen 4
V Erste Schritte Array.length[x] in einer Schleife - ich verstehe das nicht Java Basics - Anfänger-Themen 1
K Array mit for-each Schleife füllen Java Basics - Anfänger-Themen 5
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
S For Schleife Char Array Java Basics - Anfänger-Themen 1
S int-Array mittels Arrays.sort() in einer Schleife sortieren. Java Basics - Anfänger-Themen 2
S Array mit "foreach"-Schleife und nextInt (aus Scanner) beschreiben Java Basics - Anfänger-Themen 6
J Werte der For-Schleife in Array abspeichern Java Basics - Anfänger-Themen 1
T Array in Schleife Java Basics - Anfänger-Themen 5
C For schleife mit Array und Objekten Java Basics - Anfänger-Themen 17
D Array in for-Schleife ausgeben Java Basics - Anfänger-Themen 3
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
R Erste Schritte 2D-Array: Zeilen & Spalten ohne schleife übergeben? Java Basics - Anfänger-Themen 3
L Falsches Array ausgegeben aufgrund von Fehler in Schleife (??) Java Basics - Anfänger-Themen 6
J For Schleife mit Array funktioniert nicht!? Java Basics - Anfänger-Themen 5
M For schleife mit Array Java Basics - Anfänger-Themen 5
N erweitere for-schleife array Java Basics - Anfänger-Themen 4
S Zweidimensionales Array mit Schleife summieren Java Basics - Anfänger-Themen 2
L String aus eingelesener XML (Schleife) in String Array ablegen Java Basics - Anfänger-Themen 13
H mit Schleife ein Array mit Objekten füllen Java Basics - Anfänger-Themen 3
B Schleife und Array Java Basics - Anfänger-Themen 18
C Schleife mit Array funktioniert nicht Java Basics - Anfänger-Themen 4
E foreach schleife nur mit int-Array ? Java Basics - Anfänger-Themen 2
G for-Schleife in zweidimensionalen Array ausgeben Java Basics - Anfänger-Themen 2
G Array mit Schleife durchlaufen - guter Stil? Java Basics - Anfänger-Themen 20
G Methodenaufruf in der for-Schleife mit Array Java Basics - Anfänger-Themen 7
G Zweidimensinales String array über for Schleife beschreiben Java Basics - Anfänger-Themen 20
M Array und Schleife Java Basics - Anfänger-Themen 2
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben