initializierungsproblem

Status
Nicht offen für weitere Antworten.

engerl0610

Mitglied
hallo
Ich weiß nicht genau, was falsch ist, aber mein programm schreibt mir immer diesen fehler:
und ich weiß nicht wie ich den beheben kann.

variable array might not have been initialized

int help = array[n];

^


Code:
class Array{
	public static void main(String []args){
	int n=0;
	int []array;
	int []a;
	
	a=new int[80];
 
	for (int i=0;i<a.length;i++)
	a[i]=In.readInt();
	
	int[]x=new int[80];



if(n <= 80) {

   int help = array[n]; 
   array[n] = array[0];  
   array[0] = help; 
	
	}
	}
}

danke
 

Manfred

Bekanntes Mitglied
Irgendwo oberhalb der if-Abfrage muss stehen

int help=0;

dann aber nur mehr help = .....



Irgendwie versteh ich aber gar nicht, was das sein soll!?
 

dotlens

Top Contributor
du hast deinem array noch nicht gesagt wie gross er sein soll wenn du
Code:
int[] help;
schreibst.

und da ein Array eine feste Grösse hat muss er die wissen befor du etwas hineinschreiben kannst....
 

engerl0610

Mitglied
Es funktioniert leider noch immer nicht.

variable array might not have been initialized

help = array[n];

^


Code:
class Array{
	public static void main(String []args){
	int n=0;
	int []array;
	int []a;
	
	a=new int[80];
 
	for (int i=0;i<a.length;i++)
	a[i]=In.readInt();
	
	int[]x=new int[80];

int help=0;

if(n <= 80) {

   help = array[n]; 
   array[n] = array[0];  
   array[0] = help; 
	
	}
	}
}
 

dotlens

Top Contributor
du hast deinen zweiten array noch nicht initialisiert:

Code:
int []array = new int[100];
 

Manfred

Bekanntes Mitglied
ich versteh eins nicht:

mit

help = array[n];

bekomm ich den n-ten Eintrag des Arrays - array.
Und diesen Wert will ich in ein Array eintragen??


Oder will ich das komplette Array array in ein Array Namens help kopieren??

Dann wohl eher int[] array = help;

Oder?
 

Manfred

Bekanntes Mitglied
variable array might not have been initialized


Schreib unter int help=0;

array = new int[xxx];


xxx=die grösse des arrays


Das problem ist, dass ich nur einen array verwenden darf

Du verwendest aber schon2 (a[], array[])
 

engerl0610

Mitglied
Die angabe meines beispiels lautet:
erstellen sie ein programm, das ein int-zeichenfeld der länge n (n<=80) einliest, es invertiert (1.zahl mit der n-ten vertauscht usw), und dann ausgibte. + Methoden
 

dotlens

Top Contributor
Code:
class Array{ 
   public static void main(String []args){ 
   int n=0;
   int []a = new int[80]; 

   for (int i=0;i<a.length;i++) 
   a[i]=In.readInt(); 
    
   int[]x=new int[80]; 

int help=0; 

if(n <= 80) { 

   help = a[n]; 
   a[n] = a[0];  
   a[0] = help; 
    
   } 
   } 
}
 

engerl0610

Mitglied
Habt ihr jetz eine idee (ihr habt sicher eine), wie ich mein beispiel lösen kann????????

Die angabe meines beispiels lautet:
erstellen sie ein programm, das ein int-zeichenfeld der länge n (n<=80) einliest, es invertiert (1.zahl mit der n-ten vertauscht usw), und dann ausgibte. + Methoden
danke
 

dotlens

Top Contributor
würde das ganze so oder so in einem Vector machen und nicht in einem Array, da du die grösse nicht vorher kennst...
ich hab keine Zeit dafür dir das progi zu schreiben :D aber oben siehst du ja wies geht. schau dir die Klasse Vector an, dann wird das ganze wesentlich einfacher...
 

Manfred

Bekanntes Mitglied
was bedeutet das 1. mit dem nten vertauscht??

Angenommen 50 Werte

das 1 mit 50
das 2 mit 49
das 3 mit 48 ??

oder wirklich nur das erste mit dem letzten und Schluss??
 

dotlens

Top Contributor
nur erste mit dem letzten.

hab die Klass In nicht, aber denke so müsste es gehen...
Code:
class Array {

	public static void main(String[] args) throws IOException {
		int n = 5;
		int[] a = new int[n];

		for (int i = 0; i < a.length; i++){
			System.out.println(i);
			a[i] = In.readInt();
		}

		int help = 0;

		if(n <= 80) {

			help = a[n-1];
			a[n-1] = a[0];
			a[0] = help;

		}
		for (int i = 0; i < a.length; i++){
			System.out.println(a[i]);
		}
	}
}
 

dotlens

Top Contributor
n kannst du beliebig verändern, es ist die anzahl zahlen die abgefragt werden.
dann müsstest du ne while schleife machen un n immer ein runterzählen...
 

Manfred

Bekanntes Mitglied
Code:
class Array { 

   public static void main(String[] args) throws IOException { 
      int n = 5; 
      int[] a = new int[n]; 

      for (int i = 0; i < a.length; i++){ 
         System.out.println(i); 
         a[i] = In.readInt(); 
      } 

      int save = a[0];   //erstes Element sichern
      a[0] = a[n];        //letztes in erstes schreiben
      a[n-1] = save;       //erstes Element von vorhin als letztes setzen;

      for (int i = 0; i < a.length; i++){ 
         System.out.println(a[i]); 
      } 
   } 
}

Warum eine if-abfrage??
 

dotlens

Top Contributor
du könntest in ner whil schleife abfragen ob du exit eingegeben hast und solange du nicht exit eingegeben hast zählst du eine var hoch und speicherst die Werte, macht aber keinen sin in einem Array, du musst vorher wissen wieviele Zahlen du einlesen möchtest (n - Zahlen in meinem beispeil) sonst hast du viel zu grosse arrays.
 

engerl0610

Mitglied
das problem is aber dass ich nicht weiß, wieviele zahlen.
könnte ich einfach 80 eingeben, und schon früher abbrechen??
 

dotlens

Top Contributor
wenn du früher abbrechen willst muss du sowas wie exit oder -1 einbauen das zu einem abbruch führt. das Programm weiss nicht von alleine wann du aufhören willst zahlen einzugeben...
 

dotlens

Top Contributor
so kannst du am anfang angeben wieviele Zahlen du eingeben möchtest:
Code:
class Array {

	public static void main(String[] args) throws IOException {
		System.out.print("Wieviele Zahlen möchten Sie eingeben? ");
		int n = In.readInt();
		int[] a = new int[n];

		for (int i = 0; i < a.length; i++){
			System.out.println(i);
			a[i] = In.readInt();
		}

		int help = 0;

		if(n <= 80) {

			help = a[n-1];
			a[n-1] = a[0];
			a[0] = help;

		}
		for (int i = 0; i < a.length; i++){
			System.out.println(a[i]);
		}
	}
}
 

Manfred

Bekanntes Mitglied
engerl0610 hat gesagt.:
könnte ich auch eine zahlenreihe eingeben und dann das gesamte invertierte ergebnis erhalten????

Es gibt eigentlich nichts, was nicht geht......


Code:
public class Umdreh
{
    private int[] array;

    public Umdreh()
    {
        array = new int[21];
    }
    
    public void dreheUm()
    {
        int[] temp = new int[array.length];
        int zaehler=array.length-1;

        for(int i=0; i<array.length; i++)
        {
            temp[zaehler] = array[i];
            zaehler--;
        }
        
        array = temp;
    }
    
    public void zeigeArray()
    {
        for(int i=0; i<array.length; i++)
            System.out.println(array[i]);
    }
    
    public static void main(String[] args)
    {
        Umdreh u = new Umdreh();
        
        for(int i=0; i<21; i++)
            u.array[i]=i;
        
        u.zeigeArray();
        
        u.dreheUm();
        
        u.zeigeArray();
        
    }
}
 

Peter@Pan

Aktives Mitglied
engerl0610 hat gesagt.:
Das ist ja supa. aber was ist wenn die zahlenreihe: 3 5 9 8 6 5 lautet.
dann gibt er mir 1 2 3 4 5 6 zurück.

Dann muss du dem USER die Möglichkeit geben die Zahlen einzugeben. Zum BEispiel so:

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Umdreh 
{ 
    private int[] array; 

    public Umdreh() 
    { 
        array = new int[21]; 
    } 
    
    public void dreheUm() 
    { 
        int[] temp = new int[array.length]; 
        int zaehler=array.length-1; 

        for(int i=0; i<array.length; i++) 
        { 
            temp[zaehler] = array[i]; 
            zaehler--; 
        } 
        
        array = temp; 
    } 
    
    public void zeigeArray() 
    { 
        for(int i=0; i<array.length; i++) 
            System.out.println(array[i]); 
    } 
    
    public static void main(String[] args) 
    { 
        Umdreh u = new Umdreh(); 
        
        for(int i=0; i<21; i++) 
        { System.out.println("Bitte geben Sie die Zahl für Feld " + (i+1) + " ein"); 
            u.array[i]=Integer.parseInt(readInput()); //Hier kann der User seine Zahlen eingeben
        }
        u.zeigeArray(); 
        
        u.dreheUm(); 
        
        u.zeigeArray(); 
        
    } 

	private static String readInput()
	{
		String s = "";
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		
		try {
			s = in.readLine();
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
                               return s;
	}

}

@Manfred: Ich hoffe das geht in Ordnung, das ich für das Beispiel deinen Code verwende. Wenn nicht - werde ich es wieder löschen.
 

Peter@Pan

Aktives Mitglied
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

Steht aber auch oben in meinem Beispiel :!:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben