Problem beim speichern von Zufallszahlen in einem Array.

G

GreenThunder

Problem beim speichern von Zufallszahlen in einem Array und mit Methoden.

Hallo,

ich bin gerade dabei, an der Uni, Java zu lernen. Allerdings bin ich erst in der 5.Woche und demnach nicht wirklich bewandelt mit Java.

In einer Übungsaufgabe sollen wir unter anderem eine, vom Nutzer bestimmte, Anzahl von Zufallszahlen zwischen -99 und 99 erzeugen und diese in einem Feld speichern.
Ich habe nun das Problem, dass das Programm zwar compiliert wird, aber nach der Eingabe der Anzahl mit folgende Meldung ausgegeben wird.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4

Das heißt ja wohl so viel wie, dass auf einen ungültigen Index zugegriffen wird, aber ich weiß nicht wieso und wie ich das ändern kann.

Mein Programm:
PHP:
import java.io.*;         
import java.lang.*;          

public class Feld
{
  public static void main (String[] args) throws IOException
  {
   BufferedReader din = new BufferedReader(                   
                        new InputStreamReader(System.in));
   
   System.out.print("Wieviele Zufallszahlen sollen erzeugt werden?: ");            
   int l = Integer.parseInt(din.readLine());
   
   int[] feld = new int[l];
   
   for (int i=1; i<=l;i++)
	   {
	   feld[l] =(int) Math.floor(200*Math.random())-100;
	   }
   System.out.print(feld[l]);
  } 
}

Wäre nett wenn ihr mir helfen könntet.
 
Zuletzt bearbeitet von einem Moderator:
Hi,

sollte so klappen, oder? (Konnte leider nicht testen):

Code:
import java.io.*;         
import java.lang.*;          

public class Feld
{
  public static void main (String[] args) throws IOException
  {
   BufferedReader din = new BufferedReader(                   
                        new InputStreamReader(System.in));
   
   System.out.print("Wieviele Zufallszahlen sollen erzeugt werden?: ");            
   int l = Integer.parseInt(din.readLine());
   
   int[] feld = new int[l];
   
   for (int i=0; i<l;i++)
       {
       // i-te Zufallszahl im Feld an Stelle i abspeichern
       feld[i] =(int) Math.floor(200*Math.random())-100;
       //jede erzeugte Zahl ausgeben:
       System.out.println(feld[i]);
       }
  } 
}
 
Zuletzt bearbeitet:
Nun bin ich beim nächsten Problem. Ich schreib es gleich mal hier mit rein, da es ja dass gleiche Programm ist.

Ich soll nun also die Zufallszahlen per Methode erzeugen lassen und diese auch per zweiter Methode ausgeben lassen.

Mein Quelltext:
PHP:
import java.io.*;             
import java.lang.*;           

public class AufgabeEins
{
static void erzeuge(int l)        
  {
  int[] feld = new int[l];
  for (int i=0; i<l;i++)
    {
    feld[i] =(int) Math.floor(200*Math.random())-100;
    }
  } 
  
static void ausgabe(int[] f) 
  {
  for (int i=0; i<f.length;i++)
	  {
	  System.out.print(f[i]+" ");
	  }
  }
   
public static void main (String[] args) throws IOException
  {
   BufferedReader din = new BufferedReader(                                    //Deklaration des Eingabestroms
                        new InputStreamReader(System.in));
   System.out.print("Wieviele Zufallszahlen sollen erzeugt werden?: ");            
   int l = Integer.parseInt(din.readLine());		                           //Eingabe der Variable l
   erzeuge(l);
   ausgabe(l);
  } 
}

Mein Problem:

...java:35: ausgabe(int[]) in AufgabeEins cannot be applied to (int) ausgabe(l);
 
Hallo!

Schau mal hier:
Code:
 static int[] erzeuge(int l)		
   {
   int[] feld = new int[l];
   for (int i=0; i<l;i++)
 	{
 	feld[i] =(int) Math.floor(200*Math.random())-100;
 	}
    return feld;
   }
 
 ...
 
    int[] feld = erzeuge(l);
    ausgabe(feld)

gruss Tom
 
So langsam scheint sich das zu einem GREENTHUNDER lernt Java Thread zu entwickeln. *g*

Also der Algorithmus für meine Aufgabe läuft nur hab ich wieder ein Problem, das in eine Methode zu verpacken.
Ich hab keine Ahnung was ich als Rückgabewert zurückgeben soll. Ohne funktioniert es nicht und einen String bzw. ein Feld zurückgeben, macht Java auch nicht mit.
Er fordert irgendwie immer eine Integervariable.

PHP:
import java.io.*;            

public class AufgabeDrei
{
 
 static int englishPlural(String s)  
  {
  if (s.endsWith("s") || s.endsWith("x") || s.endsWith("z") || s.endsWith("ch") || s.endsWith("sh") )
		  {
		  String k=s+"es";
		  System.out.println("Der Plural von '"+s+"' lautet '"+k+"'.");
		  } 
		  else
		     {
		     if (s.endsWith("y"))
		         {
		         String k=s.substring(0,s.length()-1);
		         if (k.endsWith("u") || k.endsWith("o") || k.endsWith("e"))
		            {
		            k=s+"s";
		            System.out.println("Der Plural von '"+s+"' lautet '"+k+"'.");
		            }
		            else
		             {
		             k=k+"ies";
	             	 System.out.println("Der Plural von '"+s+"' lautet '"+k+"'.");
		             }
		         }
		         else
		           {
		           String k=s+"s";
		           System.out.println("Der Plural von '"+s+"' lautet '"+k+"'.");
		           }
		     }
  return ;
  } 
  
  
 public static void main (String[] args) throws IOException
  {
  BufferedReader din = new BufferedReader(                 
                       new InputStreamReader(System.in));
   for (int i=0;i>=args.length-1;i++)  
        {
        englishPlural(args[i]); 
     	} 			
   
  }

}

Meine Aufgabe ist es, ein Programm zu schreiben, dass zu einem Englischen Substantiv die entsprechende Pluralform ausgibt. Die Substantive werden in der Kommandozeile als Parameter mit übergeben.
 
Dann gib doch einfach gar nichts zurück. :) (void)
Also
static void englishPlural(String s)

und das return; kannst Du Dir sparen.
 
Ansonsten kann man auch null(String etc) oder 0 (int etc) zurückgeben, und wenn du den String k mit dem du arbeitest vor dem ersten if Block initialisierst kannst du ihn auch zurückgeben..
Aber wenn du das garnicht brauchst mach das was Snape dir geraten hat
mfg
elmato
 
Zurück