Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo allerseits...
Bin neu hier und bin auch neu in Java
und habe folgende Frage:
Aufgabe: Array erstellen, 100 Einträge und jeweils ne Zufallszahl von 1..1000 rein.
Dann Methode erstellen die größte und kleinste Zahl im Array ermittelt.
Folgendes habe ich geschrieben, müsste eigentlich inhaltlich stimmen (durch den compiler isses ohne Fehler), aber ich weiß einfach nicht wie ich das nun aufrufe um das Programm zu testen.. !?
Bitte um Hilfe !!!
Code:
import java.util.*;
import java.io.*;
public class Feld {
int ar[] = new int[100];
Random r = new Random();
public void maxmin() {
int max=0;
int min=1000;
int maxind=0;
int minind=0;
for (int i=0; i<100; i++) {
ar[i]= r.nextInt(1000); }
for (int i=0; i<100; i++) {
if (ar[i] < min) {min = ar[i]; minind=i;}
else {if (ar[i]>max){max=ar[i]; maxind=i;}
}
}
System.out.println("Maximum: " +max);
System.out.println("Minimum: "+min);
System.out.println("Index Maximum: " +maxind);
System.out.println("Index Minimum: "+minind);
}
}
Du brauchst ein neues Objekt der Klasse um die Methode aufzurufen. Also:
Code:
new Feld().maxmin();
Aber: Dein Code sieht ja schlimm aus. Gewöhn dir mal gute Einrückungen an. Das könnte z.B. so aussehen:
Code:
import java.util.*;
import java.io.*;
public class Feld
{
int ar[] = new int[100];
Random r = new Random();
public void maxmin()
{
int max=0;
int min=1000;
int maxind=0;
int minind=0;
for (int i=0; i<100; i++) {
ar[i]= r.nextInt(1000);
}
for (int i=0; i<100; i++) {
if (ar[i] < min) {
min = ar[i]; minind=i;
}else{
if (ar[i]>max){
max=ar[i]; maxind=i;
}
}
}
System.out.println("Maximum: " +max);
System.out.println("Minimum: "+min);
System.out.println("Index Maximum: " +maxind);
System.out.println("Index Minimum: "+minind);
}
public static void main(String[] args) {
new Feld().maxmin();
}
}
Mein array ar[] wird ja nur in der Methode maxmin geändert, außerhalb der Methode sind alle Einträge 0, wie kann ich das ändern, dass auch außerhalb der Methode die Einträge von ar[] abrufbar sind?
nun, dann ist es aber so, dass ich von ausßen nicht drauf zugreifen kann oder ? Wenn ich von einer anderen Methode aus z.B. System.out.println("30: "+ar[30]); ausgeben will, wird immer 0 ausgegeben (egal welcher Index).
Was mach ich denn da falsch ?
import java.util.*;
import java.io.*;
public class Feld {
int ar[] = new int[100];
Random r = new Random();
public void maxmin() {
int max=0;
int min=1000;
int maxind=0;
int minind=0;
for (int i=0; i<100; i++) {
ar[i]= r.nextInt(1000); }
for (int i=0; i<100; i++) {
if (ar[i] < min) {min = ar[i]; minind=i;}
else {if (ar[i]>max){max=ar[i]; maxind=i;}
}
}
System.out.println("Maximum: " +max);
System.out.println("Minimum: "+min);
System.out.println("Index Maximum: " +maxind);
System.out.println("Index Minimum: "+minind);
}
public float average(int n) {
int a=0;
for (int i=0; i<n; i++) {a=a+ar[i];}
System.out.println("arithmetischer Mittelwert: "+(a/n));
return (a/n);
}
public static void main(String[] args) {
new Feld().maxmin();
new Feld().average(100);
}
}
Ausgabe:
Maximum: 995
Minimum: 1
Index Maximum: 60
Index Minimum: 14
arithmetischer Mittelwert: 0
Ausgabe beim arithmetischen Mittelwert ist immer 0, und ich glaub das liegt daran, dass das Feld sozusagen komplett leer ist. Oder lieg ich komplett falsch ?
Na wenn du nen neues Feld machst is das kein Wunder. Du musst das new Feld in ne Variable legen und darauf dann auch bei der zweiten Methode zugreifen.