Ich habe es soweit geschafft dass die Felder durch den Scanner eingelesen werden und die Elemente ebenso. Nun ist mein Problem dass ich die Zahlen nicht rückwärts ausgeben kann. Beispiel Anzahl Felder 3 , Elemente 6,7,8 also als Ergebnis müsste 8,7,6 rauskommen.
Mein Ansatz: feld[index]= feld[anzahl - index - 1];
aber da werden nur 2 Zahlen rückwärts ausgegeben.
Ich möchte nur das in der 2. While Schleife was geändert wird.. Bin noch Anfänger aber ich denke der Ansatz dürfte doch irgentwie in die richtige Richtung gehen??? Bin sehr dankbar wenn mir jemand kurz unter die Arme greifen kann.
import java.util.Scanner;
public class scannerback {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int index;
int anzahl;
int[] feld;
int[] hallo = null;
anzahl = sc.nextInt();
feld = new int[anzahl];
index = 0;
while ( index < anzahl )
{
feld[index] = sc.nextInt();
index = index + 1;
}
index = 0;
while ( index < anzahl )
{
feld[index]= feld[anzahl - index - 1];
System.out.print( feld[index] + " " );
index = index + 1;
}
Ich versuche mal zu erklären wo dein Fehler liegt, bevor ich dir zeige wie man es behebt.
Du machst folgendes:
Code:
feld[index] = feld[anzahl - index - 1];
Wenn wir jetzt 2 3 4 5 als Eingabe verwenden haben wir folgendes Problem.
Code:
index = 0, anzahl = 4
feld[0] = feld[4 - 0 - 1]; => feld[0] = feld[4] --> also feld[0] = 5
feld ist nun {5, 3, 4, 5}
index = 1, anzahl = 4
feld[1] = feld[4 - 1 - 1]; => feld[1] = feld[3] --> also feld[1] = 4
feld ist nun {5, 4, 4, 5}
Jetzt müsste dir der Fehler auffallen. So ziemlich alles in Java ist mutable sprich du kannst den Zustand und Inhalt ändern. Sobald du dies aber tust gehen die Informationen von vorher verloren. Dein feld hat die Informationen über die ersten beiden Einträge nicht mehr, da diese schon ersetzt worden sind mit 5 und 4. Du kannst das Problem lösen, indem du die Werte Zeitweise in ein neues Array schreibst und das dann verwendest.
Dein while-Konstrukt sieht dann so aus:
Code:
int[] tmpArray = new int[feld.length]; //anstatt feld.length geht auch anzahl
while (index < anzahl) {
tmpArray[index] = feld[anzahl - index - 1];
System.out.print(tmpArray[index] + " ");
index = index + 1;
}
Ein kleiner Tipp noch. Du kannst deine while-Schleifen durch for-Schleifen ersetzen. Das ganze sieht dann so aus:
Code:
int[] tmpArray = new int[feld.length];
for (int i = 0; i < anzahl; i++) {
tmpArray[i] = feld[anzahl - i - 1];
System.out.print(tmpArray[i] + " ");
}
Ich versuche mal zu erklären wo dein Fehler liegt, bevor ich dir zeige wie man es behebt.
Du machst folgendes:
Code:
feld[index] = feld[anzahl - index - 1];
Wenn wir jetzt 2 3 4 5 als Eingabe verwenden haben wir folgendes Problem.
Code:
index = 0, anzahl = 4
feld[0] = feld[4 - 0 - 1]; => feld[0] = feld[4] --> also feld[0] = 5
feld ist nun {5, 3, 4, 5}
index = 1, anzahl = 4
feld[1] = feld[4 - 1 - 1]; => feld[1] = feld[3] --> also feld[1] = 4
feld ist nun {5, 4, 4, 5}
Jetzt müsste dir der Fehler auffallen. So ziemlich alles in Java ist mutable sprich du kannst den Zustand und Inhalt ändern. Sobald du dies aber tust gehen die Informationen von vorher verloren. Dein feld hat die Informationen über die ersten beiden Einträge nicht mehr, da diese schon ersetzt worden sind mit 5 und 4. Du kannst das Problem lösen, indem du die Werte Zeitweise in ein neues Array schreibst und das dann verwendest.
Dein while-Konstrukt sieht dann so aus:
Code:
int[] tmpArray = new int[feld.length]; //anstatt feld.length geht auch anzahl
while (index < anzahl) {
tmpArray[index] = feld[anzahl - index - 1];
System.out.print(tmpArray[index] + " ");
index = index + 1;
}
Ein kleiner Tipp noch. Du kannst deine while-Schleifen durch for-Schleifen ersetzen. Das ganze sieht dann so aus:
Code:
int[] tmpArray = new int[feld.length];
for (int i = 0; i < anzahl; i++) {
tmpArray[i] = feld[anzahl - i - 1];
System.out.print(tmpArray[i] + " ");
}
Vielen Dank für die ausführliche Erklärung.Dank dir habe ich es nun verstanden.
Wir sind hier doch bei Java, warum nutzt man nicht javas bibliotheken?
Code:
int[] test = {123,456,789};
String a = "";
StringBuilder builder;
for(int temp: test){
a += temp;
}
builder = new StringBuilder(a);
System.out.println(a); //Ausgabe: 123456789
a = builder.reverse().toString();
System.out.println(a); //Ausgabe: 987654321
Das wäre ein beispiel um es einfach zu machen.
nutzen einer for-each schleife um jedes element des Arrays ab zu arbeiten, diese einfach hintereinander an einen leeren string anhängen und durch den stringbuilder umdrehen.
[VB.NET] [Source Code] Zahlen als Wort ausgeben 04/17/2016 - .NET Languages - 2 Replies Public Function NumberWord(n As Integer) As String
Select Case n
Case Is < Integer.MinValue + 2, Integer.MaxValue
Throw New ArgumentOutOfRangeException("n", n, String.Format("valid range is: -{0} to {0}", Integer.MaxValue - 1))
Case 0 : Return "null"
Case Is < 0 : Return "minus " & NumberWord(-n)
End Select
NumberWord = NumberWordRecursive(n)
Dim zehner, einer As Integer
zehner = Math.DivRem(n, 10, einer)
Große Zahlen ausgeben 11/01/2013 - General Coding - 1 Replies Hallo zusammen,
ich habe nicht direkt ein Problem, sondern mich interessiert viel mehr wie ich etwas derartiges anstellen kann ohne vordefinierte Klassen/Funktionen für große Zahlen zu nehmen. Programmiersprache ist eigentlich egal, mir gehts nur ums Prinzip dahinter.
Wenn man mit Zahlen rechnen will, die genau sind und die größer als 2^64 sind, dann kommt man um einen neuen "eigenen" Datentyp nicht herum.
Ich habe einen neuen Datentyp erstellt und dieser besteht aus 256 Bits, kann...
Zahlen sprachlich ausgeben 10/31/2013 - C/C++ - 8 Replies Hallo,
ich will ein Pgramm schreiben, dass eine 4 stellige Zahl einliest und sie dann sprachlich ausgibt:
z.B.: 1234 ---> eins-zwei-drei-vier
Nun ich hab das was geschrieben, allerdingst funktioniert das nur mit einer einstelligen Zahl, ich komm da jetzt nicht weiter, wie soll ichs machen?
#include <iostream>
using namespace std;
C# Natürliche Zahlen ausgeben 10/02/2012 - C/C++ - 6 Replies Hallöchen,
auch wenn, das der C/C++ Bereich ist , hoffe ich hier erklärung zu finden.
Zu meiner Frage :
Es soll eine Integer-Zahl von der Tastatur eingelesen und anschließend sollen alle natürlichen Zahlen bis zu dieser Zahl auf dem Bildschirm ausgegeben werden.
Das soll mit einer for-Schleife gelöst werden.