|
You last visited: Today at 23:00
Advertisement
Java Zahlen/Elemente Rückwärts Ausgeben
Discussion on Java Zahlen/Elemente Rückwärts Ausgeben within the Java forum part of the Coders Den category.
11/06/2016, 00:42
|
#1
|
elite*gold: 0
Join Date: Apr 2013
Posts: 2,325
Received Thanks: 141
|
Java Zahlen/Elemente Rückwärts Ausgeben
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;
}
}
}
|
|
|
11/06/2016, 10:53
|
#2
|
elite*gold: 0
Join Date: Jul 2009
Posts: 211
Received Thanks: 137
|
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] + " ");
}
|
|
|
11/06/2016, 12:11
|
#3
|
elite*gold: 0
Join Date: Apr 2013
Posts: 2,325
Received Thanks: 141
|
Quote:
Originally Posted by Mysthik
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.
|
|
|
11/06/2016, 12:40
|
#4
|
elite*gold: 15
Join Date: Jul 2010
Posts: 3,926
Received Thanks: 1,158
|
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.
|
|
|
11/06/2016, 15:55
|
#5
|
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 444
|
Weil er Übungsaufgaben macht und was lernen will?
|
|
|
11/06/2016, 16:06
|
#6
|
elite*gold: 0
Join Date: Apr 2013
Posts: 2,325
Received Thanks: 141
|
Quote:
Originally Posted by algernong
Weil er Übungsaufgaben macht und was lernen will?
|
jop genau habe nun auch als weitere Übung selbst geschafft bei einer Schranke den Index der Elemente auszugeben. Dank dem Ansatz mit einem neue Array.
Von den Bibiliotheken habe ich noch keine Ahnung.^^ Bin noch Anfänger
Wie schließe ich hier überhaupt den Thread da mir geholfen wurde?
|
|
|
11/12/2016, 14:51
|
#7
|
dotCom
elite*gold: 9842
Join Date: Mar 2009
Posts: 16,835
Received Thanks: 4,668
|
#closed as requested
|
|
|
 |
Similar Threads
|
[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.
|
All times are GMT +1. The time now is 23:02.
|
|