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.
Ich möchte ein Programm erstellen, welches int-Zahlen eingegeben bekommt und diese in ein Array einträgt. Es wäre sehr nett, wenn eine iterative und rekursive Variante gezeigt wird.
Da ich mit der Eingabeaufforderung kompiliere und ausführe, müsste ich doch in die main-Methode auch was eintragen, damit auch etwas ausgeführt wird oder?
Mein Ansatz:
Java:
public class Array{
public static void main(String[] args){
// ?
}
public void trageEin(int n){
int[] a= new int[9];
for(int i=0; i<a.length; i++){
a[i]=n;
}
}
public void gibAus(){
System.out.println("Dein Array:"+a[]);
}
}
Heißt das, dass ich die Ausgabe in die Methode trageEin schreiben muss.
Also:
Java:
public class Array{
public void trageEin(int n){
int[] a= new int[9];
for(int i=0; i<a.length; i++){
a[i]=n;
}
System.out.println("Dein Array:"+a[]);
}
Wie muss ich das mit der main-Methode machen? Denn ich wollte es mit der Eingabeaufforderung ausführen. Außerdem arbeite ich mit Notepad++, da das kein großes Programm ist. Vielen Dank!
a war eine lokale Variable, weshalb ich alles in eine Methode gepackt habe.
Zur Ausgabe:
Java:
System.out.println("Dein Array:"+a[]);
hat njans zwar geschrieben, dass es syntaktisch nicht korrekt ist, aber ich verstehe nicht, was ich daran ändern soll. Also, muss dann statt a[] in der Klammer etwas anderes stehen.
Jetzt habe ich versucht, das Programm etwas zu erweitern. Der Benutzer soll so viele Zahlen wie a.length eingeben. Danach soll das Programm diese Zahlen nacheinander in das Array eintragen.
Java:
public class Array{
public static void main(String[] args){
int x=0;
int z = Integer.parseInt(System.console().readLine());
int n=z;
int[] a= new int[9];
for(int i=0; i<a.length; i++){
a[i]=z;
a[z]=i;
System.out.println("Dein Array:"+a[z]);
}
}
}
Ich weiß nicht genau, wie die eingegebenen Zahlen in das Array übertragen werden sollen.
Bitte um einen Ansatz. Vielen Dank!
Heißt das, dass ich zwei for-Schleifen haben muss. Eine for-Schleife soll das Array von 0 bis a.length durchlaufen. Aber was macht dann die zweite for-Schleife, wenn es die geben soll? Ist das nicht richtig, wie ich die for-Schleife hingeschrieben habe. In meinem Beispiel geht doch die Variable i das Array von 0 bis a.length durch. Das Problem entsteht glaube ich beim Einfügen der eingegebenen Zahlen in das Array. Bitte um Hilfe. Vielen Dank.
Heißt das, dass ich zwei for-Schleifen haben muss. Eine for-Schleife soll das Array von 0 bis a.length durchlaufen. Aber was macht dann die zweite for-Schleife, wenn es die geben soll? Ist das nicht richtig, wie ich die for-Schleife hingeschrieben habe. In meinem Beispiel geht doch die Variable i das Array von 0 bis a.length durch. Das Problem entsteht glaube ich beim Einfügen der eingegebenen Zahlen in das Array. Bitte um Hilfe. Vielen Dank.
Du kannst die Abfrage der Zahlen auch innerhalb der Schleife machen.
Frage: Was bezweckst du hier? Warum dieses "herumschieben" der Variablenwerte? Wozu ist n da? Warum a= z und a[z] = i?
Außerdem ist es ziemlich wahrscheinlich, dass dir hier eine Exception fliegt. Was ist, wenn ich z.B. z = 20 eingebe?
Java:
public class Array{
public static void main(String[] args){
int x=0;
int z = Integer.parseInt(System.console().readLine());
int n=z;
int[] a= new int[9];
for(int i=0; i<a.length; i++){
a[i]=z;
a[z]=i;
System.out.println("Dein Array:"+a[z]);
}
}
}
Eigentlich wollte ich ein Programm schreiben, das
1- den Benutzer nach beliebig vielen Zahlen fragt.
2- durch diese Zahlen die Länge des Arrays festlegt
3- diese Zahlen nacheinander in das Array einträgt
Ich weiß, dass in meinem Code viele Fehler gemacht wurden, aber ich komme trotzdem nicht weiter. Es wäre sehr nett, wenn einer ein Paar Zeilen im Code so ändert, dass ich danach selber versuchen kann und weiterkomme. Vielen Dank!
@Saheeda: Wenn ich z.B. 20 für z eingebe, dann bricht das Programm ab, weil ich eine Zahl größer als 9 (a.length) eingegeben habe.
Eigentlich wollte ich ein Programm schreiben, das
1- den Benutzer nach beliebig vielen Zahlen fragt.
2- durch diese Zahlen die Länge des Arrays festlegt
3- diese Zahlen nacheinander in das Array einträgt
Ich weiß, dass in meinem Code viele Fehler gemacht wurden, aber ich komme trotzdem nicht weiter. Es wäre sehr nett, wenn einer ein Paar Zeilen im Code so ändert, dass ich danach selber versuchen kann und weiterkomme. Vielen Dank!
@Saheeda: Wenn ich z.B. 20 für z eingebe, dann bricht das Programm ab, weil ich eine Zahl größer als 9 (a.length) eingegeben habe.
Ganz so, wie du dir das vorstellst, funktioniert es nicht. Warum? Du musst die Zahlen nach der Abfrage irgendwo zwischenspeichern, z.B. in einer Liste, dann kannst du dir den Spaß mit dem Array aber auch schenken oder überträgst sie halt nachher ins Array.
Oder: Du fragst vorher, wie viele Zahlen der Benutzer eingeben möchte und erzeugst ein Array der entsprechenden Größe.
Versuche mal diese Anweisungen in Java-Code umzusetzen:
Ich habe den Code geändert, aber es macht noch nicht, was es machen soll.
Java:
public class Array{
public static void main(String[] args){
System.out.println("Wie lang soll dein Array sein?:");
int laenge = Integer.parseInt(System.console().readLine());
int[] array = new int[laenge];
for (int i=0; i<laenge; i++) {
for (int s=0; s<array.length; s++){
int zahl = Integer.parseInt(System.console().readLine());
array[i]=zahl;
}
System.out.println("Dein Array:"+array[i]);
}
}
}
So sieht die Ausgabe aus, wenn ich zuerst 3 eingebe für die Länge...: Wie lang soll dein Array sein?:
3
1
2
4
Dein Array:4
5
6
7
Dein Array:7
8
9
0
Dein Array:0
Also gibt das Programm immer die letzte Zahl im Array aus und fragt mich dreimal nach einem Array (statt einmal).
Ich hoffe, dass ihr mir weiterhelfen könnt. Vielen Dank
Du brauchst zwei Schleifen, ja, aber nicht ineinander verschachtelt. Mach eine zum Einlesen und _danach_ eine zum Ausgeben.
Du bekommst immer die letzte Zahl ausgegeben, weil du immer nur auf dieselbe Stelle im Array schreibst.
i wird von der Äußeren auf 0 gesetzt, danach wird in der Inneren Schleife s-Mal die Zelle array überschrieben.
Danach wird i in der Äußeren auf 1 erhöht und innen wieder s-Mal die Zelle array überschrieben. etc.
Wenn ich die for-Schleifen nicht ineinander implementiere, dann erkennt er die Variablen nicht mehr. Wie muss ich das dann machen, sodass die Variable von der ersten for-Schleife in die zweite for-Schleife übernommen wird?
Vielen Dank!
Welche Variablen erkennt er dann wo nicht mehr?
Du machst zwei getrennte Schleifen, jede hat ihren eigenen "Hochzähl-Variablen". Da das Array eh außerhalb der Schleifen definiert wird, kannst du auch problemlos aus beiden heraus darauf zugreifen.
@JavaMeister Das war nicht die Antwort auf meine Frage.
Es gibt wirklich einen großen Unterschied zwischen einem "B"enutzer und einem "b"enutzer. Wenn ich eine Frage stelle, erwarte ich Antworten bezüglich des Themas. Falls einer nicht weiter weiß, ist das natürlich in Ordnung.
Wenn ich mit den Antworten nicht wirklich weiterkomme, dann stelle ich weitere Fragen, deren Antworten mich weiterbringen könnten. Deswegen finde ich es sehr nett, dass einige Benutzer auf die meisten Fragen eine Antwort geben.
Jetzt hoffe ich, dass ich trotzdem auf meine vorherige Frage eine Antwort bekomme. Vielen Dank an alle Benutzer, die mir eine hilfreiche Antwort geben wollen und an alle Benutzer, die meine Frage durchlesen, sich Gedanken darüber machen und somit eine bestimmte Zeit damit verbringen!
@Saheeda
Das Programm hatte "array" nicht mehr erkannt, aber jetzt habe ich es hinbekommen:
Java:
public class Array{
public static void main(String[] args){
System.out.println("Wie lang soll dein Array sein?:");
int laenge = Integer.parseInt(System.console().readLine());
int[] array = new int[laenge];
for (int s=0; s<array.length; s++){
int i=s;
int zahl = Integer.parseInt(System.console().readLine());
array[i]=zahl;
for (i=0; i<laenge; i++) {
System.out.println("Die "+i+". Stelle im Array: "+array[i]);
}
}
}
}
Die Ausgabe sieht so aus (z.B. für ein Array der Länge 3): 3
1
Die 0. Stelle im Array: 1
Die 1. Stelle im Array: 0
Die 2. Stelle im Array: 0
2
Die 0. Stelle im Array: 1
Die 1. Stelle im Array: 2
Die 2. Stelle im Array: 0
3
Die 0. Stelle im Array: 1
Die 1. Stelle im Array: 2
Die 2. Stelle im Array: 3
Eine kleine Frage noch:
Wie muss ich das Programm noch ergänzen, sodass das Programm nicht mit der "0. Stelle" beginnt, sondern 1. Stelle?
Muss ich dafür eine weitere Variable benutzen? Vielen Dank für eure Mühe!
Die Zuweisung "int i = s" in der for-Schleife kanst du dir sparen. Warum arbeitest du nicht direkt mit s?
Und die indices in Java arrays beginnen grundsätzlich bei 0. Es steht dir aber natürlich frei, statt array sowas wie array[i+1] zu verwenden, was allerdings nur geht, solange i kleiner ist als laenge -1, oder in der Ausgabe System.out.println("Die "+(i+1)+". Stelle im Array: "+array); zu schreiben.
Du benutzt jetzt schon die eine oder andere Variable zu viel (siehe Hinweis von Harry Kane).
Dass Java bei 0 anfängt zu zählen, ist ganz einfach so (und übrigens auch in ziemlich vielen anderen Programmiersprachen!) und du solltest auch gar nicht erst damit anfangen, das irgendwie umgehen zu wollen. Sonst kommst du (oder ein Partner) irgendwann in Teufels Küche.
Bei der Ausgabe kannst du hingegen schreiben was du willst (siehe Harry Kane).
public class Array{
public static void main(String[] args){
System.out.println("Wie lang soll dein Array sein?:");
int laenge = Integer.parseInt(System.console().readLine());
int[] array = new int[laenge];
for (int s=0; s<array.length; s++){
int i=s;
int zahl = Integer.parseInt(System.console().readLine());
array[s]=zahl;
for (i=0; i<laenge; i++) {
System.out.println("Die "+(i+1)+". Stelle im Array: "+array[i]);
}
}
}
}
Der Hinweis mit (1+i) in der Ausgabe hat geholfen. Ich hatte die Klammern vergessen, weshalb das Programm die Zahlen hintereinander ausgegeben hatte. Das wäre schonmal gelöst!
Ich habe versucht
Java:
int i=s;
wegzulassen, aber kam dann doch nicht weiter...
Vielen Dank, dass ihr euch um diese Uhrzeit bemüht.
public class Array{
public static void main(String[] args){
System.out.println("Wie lang soll dein Array sein?:");
int laenge = Integer.parseInt(System.console().readLine());
int[] array = new int[laenge];
for (int s=0; s<array.length; s++){
//int i=s;
int zahl = Integer.parseInt(System.console().readLine());
array[s]=zahl;
for (int i=0; i<laenge; i++) {
System.out.println("Die "+(i+1)+". Stelle im Array: "+array[i]);
}
}
}
}
So funktioniert das. Vielen Dank! Somit wäre meine Frage beendet.
Nur eine andere Frage noch:
Ist es normal, dass bei der Eingabe von ganz großen Zahlen wie z.B. 999999999999999 das Programm eine Exception ausgibt. Oder ist das nur bei Arrays so? Vielen Dank nochmals!
Naja, int hat nur nen gewissen Datenbereich, den du mit der Zahl grandios überschreitest. In der Wikipedia gibts zu Integer nen Artikel, wo auch der Überlauf beschrieben wird.