Ansprechung der x'ten Zeile in Arrays

Lacritz

Mitglied
Heyho , ich habe mal wieder ein Problem,
und zwar soll ich die Zeilen eines Arrays genau ansprechen -

Java:
import java.util.Arrays;

import javax.swing.JOptionPane;
public class fillArray02
{
 
    static int[] testFeld = new int[5];
    static int a, x, y, z;
    static String testString;
    static int h = 1;
    static int[] fillArray( int size, int min, int step )
    {
        int[] testFeld =
        {
            x
        };
         while (h<size){
            testFeld[0] = min + (step * 0);
            testFeld[1] = min + (step * 1);
            testFeld[2] = min + (step * 2);
            testFeld[3] = min + (step * 3);
            testFeld[4] = min + (step * 4);
            return testFeld;
         }
        }
       
    
 
    public static void main( String[] args )
    {
        x = Integer.parseInt( JOptionPane.showInputDialog( "size=" ) );
        y = Integer.parseInt( JOptionPane.showInputDialog( "min=" ) );
        z = Integer.parseInt( JOptionPane.showInputDialog( "step=" ) );
        testFeld = fillArray( x, y, z );
        System.out.print( Arrays.toString( testFeld ) );
    }
}

Und zwar soll das Array nicht nur 0-4 lang sein , sondern 0-size lang , und dieses will ich dann returnen & mit der main methode ausgeben lassen.
 
Naja, dann initialisierst du das Feld eben erst in der Methode, wenn "size" bekannt ist:

Java:
public class fillArray02
{
(...)
    static int[] testFeld;
(...)
    public static void main( String[] args )
    {
        x = Integer.parseInt( JOptionPane.showInputDialog( "size=" ) );
        y = Integer.parseInt( JOptionPane.showInputDialog( "min=" ) );
        z = Integer.parseInt( JOptionPane.showInputDialog( "step=" ) );
        //testFeld initialisieren
        testFeld = new int[x];
        testFeld = fillArray( x, y, z );
        System.out.print( Arrays.toString( testFeld ) );
    }
 
Zuletzt bearbeitet:
Java:
import java.util.Arrays;

import javax.swing.JOptionPane;
public class fillArray02
{
 
    static int[] testFeld = new int[5];
    static int a, x, y, z;
    static String testString;
    static int h = 1;
    static int[] fillArray( int size, int min, int step )
    {
     
        int b=0;
         while (h<size){
            testFeld[x] = min + (step * b);
            x++;
            b++;
         }
         return testFeld;
        }
       
    
 
    public static void main( String[] args )
    {
        x = Integer.parseInt( JOptionPane.showInputDialog( "size=" ) );
        y = Integer.parseInt( JOptionPane.showInputDialog( "min=" ) );
        z = Integer.parseInt( JOptionPane.showInputDialog( "step=" ) );
        testFeld = new int[x];
        testFeld = fillArray( x, y, z );
        System.out.print( Arrays.toString( testFeld ) );
    }
}

So sieht der Code nun aus - mir wird jedoch ein Fehler ausgegeben den ich nicht erklären kann

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at fillArray02.fillArray(fillArray02.java:16)
at fillArray02.main(fillArray02.java:31)


MfG Lacritz
 
Kleiner Tipp: Gib deinen Variablen selbsterklärende Namen. Wie mein Vorschreiber schon meint: Solche Bezeichnungen ala h,g,y,z,u sagen einem nichts.
 
Naja, dein Problem ist, dass du das Fach mit dem Index x ansprechen möchtest. x entspricht aber in deinem Fall der Länge deines Arrays. Ein Array mit Länge 5 z.B. hat aber nur Indizes von 0 - 4, oder allgemein, von 0 - (n-1), du versuchst, das Element n anzusprechen => außerhalb des Arrays.
 
Ich werd mal die Variablen fix umbennen - komme meistens mit variablen besser klar - doofe angewohnheit die ich mir definitiv abgewöhnen sollte!
 
Hier der etwas überarbeitete Code - Problem besteht immer noch - wie genau mach ich das denn mit dem Array und dem ansprechen der x'ten zeile usw? wäre nett wenn ihr mir das in mein Programm programmieren könntet oder ein beispiel posten könntet (kann mir meist mehr vorstellen wenn ich es vor mir sehe)

Java:
import java.util.Arrays;

import javax.swing.JOptionPane;
public class fillArray02
{
 
    static int[] testFeld = new int[5];
    static int a, size, min, step;
    static String testString;
    static int counter = 1;
    static int[] fillArray( int size, int min, int step )
    {
     
        int zaehlerStep=1;
         while (counter<size){
            testFeld[size] = min + (step * zaehlerStep);
            zaehlerStep++;
            counter++;
         }
         return testFeld;
        }
       
    
 
    public static void main( String[] args )
    {
        size = Integer.parseInt( JOptionPane.showInputDialog( "size=" ) );
        min = Integer.parseInt( JOptionPane.showInputDialog( "min=" ) );
        step = Integer.parseInt( JOptionPane.showInputDialog( "step=" ) );
        testFeld = new int[size];
        testFeld = fillArray( size, min, step );
        System.out.print( Arrays.toString( testFeld ) );
    }
}

MfG Lacritz
 
Moin,

also was mir auf die Schnelle aufgefallen ist :

Du willst Doch hiermit Dein Array füllen, oder ??
Java:
static int[] fillArray( int size, int min, int step )
{
    int zaehlerStep=1;
    while (counter<size)
    {
         testFeld[size] = min + (step * zaehlerStep);
         zaehlerStep++;
         counter++;
}
Da sich aber Dein Index von "testfeld" nie ändert ....

Ich würde es dann doch mal SO versuchen:
Java:
static int[] fillArray( int size, int min, int step )
{
    int zaehlerStep=1;
    int counter = 1;
    while( counter < size )
    {
         testFeld[counter] = min + (step * zaehlerStep);  // !!!
         zaehlerStep++;
         counter++;
}
Zudem würde ich "counter" nicht aushalb der Schleife deklarieren !!

Gruß
Klaus
 
Zuletzt bearbeitet:
War super hilfreich - musste noch beide counter auf jeweils 0 setzen , dann klappts - Ich bedanke mich recht herzlich bei dir , super! 🙂

MfG lacritz
 

Zurück
Oben