Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 23:00

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Closed Thread
 
Old   #1
Trade Restricted
 
elite*gold: 0
The Black Market: 355/0/4
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;
}


}
}
Soloq is offline  
Old 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] + " ");
}
Mysthik is offline  
Thanks
1 User
Old 11/06/2016, 12:11   #3
Trade Restricted
 
elite*gold: 0
The Black Market: 355/0/4
Join Date: Apr 2013
Posts: 2,325
Received Thanks: 141
Quote:
Originally Posted by Mysthik View Post
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.
Soloq is offline  
Old 11/06/2016, 12:40   #4
 
.Scy's Avatar
 
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.
.Scy is offline  
Old 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?
algernong is offline  
Thanks
1 User
Old 11/06/2016, 16:06   #6
Trade Restricted
 
elite*gold: 0
The Black Market: 355/0/4
Join Date: Apr 2013
Posts: 2,325
Received Thanks: 141
Quote:
Originally Posted by algernong View Post
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?
Soloq is offline  
Old 11/12/2016, 14:51   #7
dotCom
 
Devsome's Avatar
 
elite*gold: 9842
The Black Market: 107/0/0
Join Date: Mar 2009
Posts: 16,835
Received Thanks: 4,668
#closed as requested
Devsome is offline  
Closed Thread


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.