void shift

Status
Nicht offen für weitere Antworten.

Unkownsyntax

Bekanntes Mitglied
Hier mein Beispiel wo ich gerade hänge:


Erstellen einer Klassenmethode:
static void shift(int[] a, int n, int val) { … }
die im eindimensionalen int-Feld a die Elemente um n Stellen nach
hinten rückt. Die freiwerdenden Elemente am Anfang des Feldes
sollen mit dem Wert val besetzt werden.

Methode void hab ich ja keinen grückgabewert aber ist da sonst noch was anders?
Wie fang ich da am besten an?
 

mahe

Aktives Mitglied
Rückgabewert brauchst Du nicht da bei Array sowieso nur eine Referenz übergeben wird. Das heißt sämtliche Änderungen sind rückwirkend für den Übergeber.

Das heißt aber auch, dass Du kein neues Array anlegen kannst und so die letzten n Elemente aus dem Array bei der Verschiebung hinausfallen müssen.
 

Robobot

Mitglied
Methode void hab ich ja keinen grückgabewert aber ist da sonst noch was anders?

Was soll da anderes sein ? Du schreibst diese Methode und rufst sie dann so auf, und prüfst mit einem Konsolenprint ob die Methode das macht was du willst:
Code:
  int [] testarray = new int[] {3,8,4,23,17,-2};
  AufrufendendeKlasse.shift (testarray, 2, -1);
 
  for (int i = 0;i<testarray.length;i++{
     System.out.println(testarray[i]);
  }

wenn ich das richtig verstanden habe, soll also für obiges beispiel das array hinterher so aussehen ?

-1,-1,3,8,4,23

Wie auch immer, für solche Sachen ist es sehr nützlich, sich das erst mal auf einem Blatt Papier zu verdeutlichen und aufzumalen.
 

Unkownsyntax

Bekanntes Mitglied
Code:
public class Main {
static void shift(int[] a, int n, int val) {

for(int j=0; j<n; j++){
for(int i=0; i<a.length;i++){
a[i+1]=a[i];
}
}       
for (int i=0; i<n; i++){
a[i]=val;
}
}

irgendwie is da a fehler drinnen ArrayIndexOutOfBoundsException... klar durch das i+1 aber wie könnt ich das umschreiben dass es funktioniert?
 

Robobot

Mitglied
falls dies das ist was du willst:

Code:
public class Test {

	static void shift(int[] a, int n, int val) {
		
		if (n<= 0) {
		   throw new IllegalArgumentException("fatal error: please shut down system immediately");
		}
		
		int temp [] = new int[a.length];
		
		for(int i = 0;i<temp.length;i++){		 
		  if(i<temp.length-n){
	       temp[i+n] = a[i];	       
		  }   
                  //frei gewordene felder mit val füllen
		  if(temp[i] == 0)
			temp[i] = val;	  	      
		}
		
		for (int i = 0;i<temp.length;i++){
			a[i] = temp[i];
		}
	}

	public static void main(String[] args) {
		int[] testarray = { 1,2,3,4,5,6 };
		Test.shift(testarray, 3, -1);

		for (int i = 0; i < testarray.length; i++) {
			System.out.println(testarray[i]);
		}
	}

}

geht bestimmt auch schneller, eleganter, anders, was weiß ich ;)
 

Unkownsyntax

Bekanntes Mitglied
HAb hier die idee gehabt mit dem swap algo. aber hier werden ja dann die variablen nach links verschoben und nicht nach rechts... hab auch schon herumprobiert aber irgendwie kann man den algo ned verändern dass es nach rechts verschoben wird hat da wer ne idee ca in der schreibweise?


Code:
static void shift(int[] a, int n, int val) {

for(int j=0; j<n; j++){
for(int i=a.length-1; i>0;i++){
a[i+1]=a[i+1]+a[i];
a[i]=a[i+1]-a[i];
a[i+1]=a[i+1]-a[i];
}
}       
for (int i=0; i<n; i++){
a[i]=val;
}
}
 

mahe

Aktives Mitglied
Das ganze ist viel einfacher als Du denkst:
Code:
public class SpeedTest {
	public static void main(String[] args) {
		
		int[] array = new int[] {3,8,4,23,17,-2};
		
		for(int a: array) {
			System.out.print(a + " ");
		}
		
		shift(array, 1, 99);
		
		System.out.println();
		for(int a: array) {
			System.out.print(a + " ");
		}
	}
	
	static void shift(int[] a, int n, int val) {
		if (a == null || n < 0) {
			throw new IllegalArgumentException();
		}
		
		int i;
		
		for(i = a.length-1; i > n-1; --i) {
			a[i] = a[i-n];
		}
		for(; i >= 0; --i) {
			a[i] = val;
		}		
	}	
}

Ich hab nicht besonders intensiv getestet aber ich glaube ich habe alle potentiellen Fehlermöglichkeiten abgefangen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
V Methoden printChar Methode mit Rückgabetyp void Java Basics - Anfänger-Themen 26
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
N Groß- und Kleinschreibung bei Java: void Methode Java Basics - Anfänger-Themen 1
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
MrDramasetter Rückgabetyp Void oder Sting Java Basics - Anfänger-Themen 18
C Void Methode überladen Java Basics - Anfänger-Themen 5
V for-Schleife in einer void Methode Java Basics - Anfänger-Themen 3
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
Tommy Nightmare void Methode gibt Array zurück Java Basics - Anfänger-Themen 3
I Methoden public void paintComponent (Graphics g) Java Basics - Anfänger-Themen 4
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
H Variablen Void und der Rückgabewert Java Basics - Anfänger-Themen 6
G Interpreter-Fehler Problem mit void-Methoden Java Basics - Anfänger-Themen 2
Silvascus Void Methode einem Stringparameter im syso-Befehl hinzufügen Java Basics - Anfänger-Themen 3
T Void Java Basics - Anfänger-Themen 32
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
Y Warum void statt Datentyp + return Java Basics - Anfänger-Themen 4
T Java Code Hilfe - public void xxx() Java Basics - Anfänger-Themen 2
T public void - Problem Java Basics - Anfänger-Themen 10
M Methoden void verschachteln Java Basics - Anfänger-Themen 4
B Void Mehoden Testen Java Basics - Anfänger-Themen 13
S Methoden void-Methode: Wieso gibt es eine Rückgabe? Java Basics - Anfänger-Themen 5
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
S Static void Methode Java Basics - Anfänger-Themen 12
L Objekte aus einem void in anderen voids verwenden Java Basics - Anfänger-Themen 8
K GUI Button methoden/void Problem Java Basics - Anfänger-Themen 6
S Probleme mit dem rückgabetyp void Java Basics - Anfänger-Themen 8
D Array void Methode erstellen. Java Basics - Anfänger-Themen 12
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
I Methoden Problem If/Else; Public Void Java Basics - Anfänger-Themen 6
D Compiler-Fehler void is an invalid type for the variable Java Basics - Anfänger-Themen 5
B Geerbte Instanz kann keine void Methode ausführen?! Java Basics - Anfänger-Themen 15
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3
S Datentypen float statt void Java Basics - Anfänger-Themen 3
S Static void main <-> componentListener Java Basics - Anfänger-Themen 9
O Probleme mit void java.awt.Component.setBackground(Color c) Java Basics - Anfänger-Themen 2
T Hilfe bei void, int !? Java Basics - Anfänger-Themen 14
T Geht so was? public void verkaufe (<X implements Produkt& Java Basics - Anfänger-Themen 8
D generische methode <T> void . Java Basics - Anfänger-Themen 9
C public static void main(String[] args) Java Basics - Anfänger-Themen 6
D Frage zu public static void main. Java Basics - Anfänger-Themen 4
K void Methode abbrechen Java Basics - Anfänger-Themen 7
G Vor oder hinter public static void main. ? Java Basics - Anfänger-Themen 8
M 'void' type not allowed Java Basics - Anfänger-Themen 18
T rotes herz public void paint(Graphics g) Java Basics - Anfänger-Themen 2
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
G <identifier> expected bei public void final Java Basics - Anfänger-Themen 3
H void not allowed? Java Basics - Anfänger-Themen 4
P Void-Aufrufe verursachen IO-Exceptions? Java Basics - Anfänger-Themen 4
T Von Main auf eine Variable in void zugreifen Java Basics - Anfänger-Themen 4
C public void keyPressed(KeyEvent e) Java Basics - Anfänger-Themen 2
N public void und verhalten bei return Java Basics - Anfänger-Themen 2
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
A die public static void main ? Java Basics - Anfänger-Themen 3
C Java-Anfang main void public? Java Basics - Anfänger-Themen 5
N public static void main(String args[]) Java Basics - Anfänger-Themen 6
G Warum eigentlich static void? Java Basics - Anfänger-Themen 3
T void Methode -> keine Chance Java Basics - Anfänger-Themen 6
F public final void getsignature() | anfänger Java Basics - Anfänger-Themen 7
B Problem mit einer static void Methode Java Basics - Anfänger-Themen 8
P Was genau bedeutet "public static void main(String[] ar Java Basics - Anfänger-Themen 10
R void? static? beide? garnichtst von beiden? Java Basics - Anfänger-Themen 11
B Eine void innerhalb einer anderen void Java Basics - Anfänger-Themen 7
G in void verändern Java Basics - Anfänger-Themen 5
J public static void main? Java Basics - Anfänger-Themen 5
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
N public static void Java Basics - Anfänger-Themen 18
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
B public static void main (String[] args) ??? Java Basics - Anfänger-Themen 2
G getParameter in public static void main Java Basics - Anfänger-Themen 3
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
J bundel - Datei wird nicht gefunden. Trotz STRG-SHIFT-J Java Basics - Anfänger-Themen 2
O Erste Schritte x*y*z mit Shift Operator moeglich? Java Basics - Anfänger-Themen 15
X Shift-Operatoren Java Basics - Anfänger-Themen 1
M Shift Operator Java Basics - Anfänger-Themen 3
M hexadezimal in binär mit Hilfe von Shift-Operatoren Java Basics - Anfänger-Themen 6
M rechts shift (>>>) einer negativen Zahl Java Basics - Anfänger-Themen 10
StrikeTom Shift + pfeiltaste ermitteln Java Basics - Anfänger-Themen 3
M Binärdarstellung in Java mit Shift-Operator + bitweises und Java Basics - Anfänger-Themen 2
M MenuShortcut nur mittels Shift+Taste Java Basics - Anfänger-Themen 3
G Shift Operatoren Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben