Hallo,
ich hab folgenden Code online gefunden:
da ich heute sonst nichts zu tun habe, habe ich versucht den Code zu vervollständigen:
leider komme ich ab encode (noch für die restlichen Nullen mit for-Schleife) nicht mehr weiter.
Wäre über Tipps/ Ansatz dankbar!
ich hab folgenden Code online gefunden:
Code:
import java.util.Scanner;
public class Array {
void print (int[] arr ){
if (arr == null) return;
for(int i = 0; i < arr.length ; i++)
System.out.println(" arr[" + i + "]: " + arr[i]);
}
void input (int[] arr) {
// Ihr Code ...
}
int[] reverse (int[] arr) {
// Ihr Code ...
}
int[] encode (int[] arr ){
// Ihr Code ...
}
public static void main ( String [] args ) throws Exception {
// Arbeitsobjekt von Klasse Array anlegen
Array worker = new Array();
// Ein Array mit 15 Werten anlegen und weitere Referenzen
int[] values = new int [15];
int[] reversedArray;
int[] encodedArray;
// Werte in Eingabe-Array einlesen und ausgeben
worker. input(values);
System.out.println(" ----------- Eingabewerte: ----");
worker. print(values);
// Werte des Eingabe-Arrays drehen und ausgeben
reverseArray = worker. reverse(values);
System.out.println(" ----------- Nach Drehung: ----");
worker. print(reversedArray);
// Werte des Eingabe-Arrays komprimieren und ausgeben
encodedArray = worker. encode(values);
System.out.println (" ---------- Komprimiert: ----");
worker. print(encodedArray);
}
}
da ich heute sonst nichts zu tun habe, habe ich versucht den Code zu vervollständigen:
Code:
import java.util.Scanner;
public class Array {
public void print (int [] arr) {
if (arr == null)
return;
for(int i = 0; i < arr.length ; i++)
System.out.println(" arr[" + i + "]: " + arr[i]);
}
//input() liest von der Tastatur ganze Zahlen ein
//und speichert diese im übergegebenen Array
//for Schleife
public void input (int [] arr) {
System.out.println("Bitte geben Sie 15 Zahlen ein!");
Scanner tastatur = new Scanner(System.in);
//Zählschleife beginnt bei i=0
//Schleife laeuft, so lange i < arr.length
//am Ende jedes Durchlaufes wird i um 1 inkrementiert
for(int i=0; i<arr.length;i++) {
arr[i]=tastatur.nextInt();
}tastatur.close();
}
//legt ein neues Array wie das uebergebene Array an
//die Werte aus arr sollen in umgekehrte Reihenfolge im neuen Array abgelegt werden
public int [] reverse (int[] arr) {
//Syntax Vereinbarung von Arrays
//datentyp [] arrayname = new datentyp [anzahl]
int[] arr2 = new int [arr.length];
int j=1;
// also arr.length -1 d.h. "letzter Wert wird als erstes ausgegebn ausgegeben
for(int i=0; i<arr.length;i++) {
arr2[i]=arr[arr.length-j];
j++;
}
return arr2;
}
//legt ein neues Array wie die komprimierenden Werte an
//die Werte aus arr sollen wie im Bild im neuen Array abgelegt werden
//das neue Array soll am Ende zurückgegeben werden
int[] encode (int[] arr ) {
int[] encode = new int[arr.length*2];
int j = 0;
encode[0]=1; //Zähler, die erste Zahl, die eingetippt wurde kommt auf jeden Fall einmal vor
encode[1]=arr[0];
for(int i=0; i<arr.length;i++) {
if(encode[j+1]==arr[i]) { //1.Stelle also 1mal kommt z.B. die Zahl 2 vor
encode[j]+=1; //danach wird es weiter "gezaehlt"
}
else {
j+=2; //springt "2" Stellen nach rechts
encode[j+1]=arr[i];
encode[j]=1;
}
// noch für die restlichen Nullen mit for-Schleife
}
return encode;
}
public static void main (String [] args ) throws Exception {
//Arbeitsobjekt von Klasse Array anlegen
Array worker = new Array();
//Ein Array mit 15 Werten anlegen und weitere Referenzen
int[] values = new int [15];
int[] reversedArray = null;
int[] encodedArray;
//Werte in Eingabe-Array einlesen und ausgeben
worker.input(values);
System.out.println("----- Eingabewerte: ----");
worker.print(values);
//Werte des Eingabe-Arrays drehen und ausgeben
reversedArray = worker.reverse(values);
System.out.println("-------Nach Drehung: ----");
worker.print(reversedArray);
//Werte des Eingabe-Arrays komprimieren und asusgeben
encodedArray = worker.encode(values);
System.out.println("------Komprimieren: -----");
worker.print(encodedArray);
}
}
leider komme ich ab encode (noch für die restlichen Nullen mit for-Schleife) nicht mehr weiter.
Wäre über Tipps/ Ansatz dankbar!