Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
hallo,
ich häng gerade schon mal wieder an ner aufgabe. ich soll aus einem beliebigen zweidimensionalen Array ein eindimensionales machen, das als Werte die Summen aus den Spalten des zweidimensionalen besitzt. die genaue aufgabenstellung hab ich mal hier hochgeladen: http://www.file-upload.net/view-654987/IMG_0001.jpg.html
mein quelltext sieht bis jetzt so aus:
class Komplett {
public static void main (String [] args){
int [][] arrayalt = new int [][] {{1375, 1466},{3232,2525},{565,4365}};
int [] arrayneu = verdichten (arrayalt);
for (int i=0;i<arrayneu.length;i++){
System.out.println (arrayneu);
}
}
public static int [] verdichten (int [][]arrayalt){
int neu [] = new int [arrayalt.length];
for (int k = 0; k<arrayalt.length;k++){
neu [k]= arrayalt[k][0];
}
int x = 0;
for (int l=0; l<neu.length; l++){
x = x + neu [l];
}
int neu2 [] = new int [arrayalt.length];
for (int m=0; m<arrayalt.length; m++){
neu2 [m]= arrayalt [m][1];
}
int y = 0;
for (int n=0; n<neu2.length; n++){
y = y + neu2 [n];
}
int [] neu3 = new int [] {x, y};
return neu3;
}
}
nun funktioniert der text auch recht schön für ne beliebige anzahl von zeilen aber sobald ich ne neue spalte, also bei
"int [][] arrayalt = new int [][] {{1375, 1466},{3232,2525},{565,4365}};"
noch jeweils eine zahl in jedem Klammerausdruck hinzufüge funktioniert der Quelltext nicht mehr. ich müsst halt irgendwie noch die spaltenanzahl in der methode verdichten berücksichtigen, aber ich hab leider absolut keinen plan wie ichs anstellen soll. kann mir vielleicht jemand helfen? schon mal vielen dank im voraus
Die Lösung sieht so aus (hast wohl nicht genügend modelliert, höhö.)
Code:
class Testklasse
{
public static void main (String [] args)
{
int [][] arrayalt = new int [][] {{1375,1466,1},{3232,2525,1},{565,4365,1}};
int [] arrayneu = verdichten (arrayalt);
for (int i=0;i<arrayneu.length;i++)
{
System.out.println (arrayneu[i]);
}
}
public static int [] verdichten (int [][]arrayalt)
{
int neu [] = new int [arrayalt.length];
for (int k = 0; k<arrayalt.length;k++)
{
for(int j=0; j<arrayalt[k].length; j++)
neu [k]+= arrayalt[k][j];
}
return neu;
}
}
Wenn du mich fragst, lag es daran, dass du 1.) lieber gleich drauflosprogrammiert hast und 2.) dich dein unformatierter Code zusätlich verwirrt hat^^ Naja viel Spaß damit
mmh. ja danke.
aber die methode die du gepostet hast, addiert jeweils den klammerausdruck, also auf die Aufgabe bezogen, die Verkaufszahlen aus jeder Filliale. Ich will aber das er mir für jedes Produkt die Summe aus allen Filialen zurückbringt. mmh.
Die Lösung sieht so aus (hast wohl nicht genügend modelliert, höhö.)
Code:
class Testklasse
{
public static void main (String [] args)
{
int [][] arrayalt = new int [][] {{1375,1466,1},{3232,2525,1},{565,4365,1}};
int [] arrayneu = verdichten (arrayalt);
for (int i=0;i<arrayneu.length;i++)
{
System.out.println (arrayneu[i]);
}
}
public static int [] verdichten (int [][]arrayalt)
{
int neu [] = new int [arrayalt.length];
for (int k = 0; k<arrayalt.length;k++)
{
for(int j=0; j<arrayalt[k].length; j++)
neu [k]+= arrayalt[k][j];
}
return neu;
}
}
Wenn du mich fragst, lag es daran, dass du 1.) lieber gleich drauflosprogrammiert hast und 2.) dich dein unformatierter Code zusätlich verwirrt hat^^ Naja viel Spaß damit
Die Lösung klappt aber auch nur, wenn du für 3 Fillialen genau 3 Produkte hast.
Variiert die Anzahl klappt es schon nicht mehr.
Abgesehen davon ist das Ergebnis falsch, weil du die Anzahl aller Produkte je Filliale rechnest, statt (siehe Aufgabenstellung) die Gesamtmenge je Produkt für alle Fillialen.
Wenn, dann so:
Code:
class Komplett{
public static void main(String[] args){
int[][] arrayalt = new int[][]{ { 1375, 3232, 565 },
{ 1466, 2525, 4365 } };
int[] arrayneu = verdichten(arrayalt);
for (int i = 0; i < arrayneu.length; i++){
System.out.println(arrayneu[i]);
}
}
public static int[] verdichten(int[][] arrayalt){
int neu[] = new int[arrayalt.length];
for (int i = 0; i < arrayalt.length; i++){
for (int j = 0; j < arrayalt[i].length; j++){
neu[i] += arrayalt[i][j];
}
}
return neu;
}
}
wow. herzlichen dank Ariol. wenn du mir jetz nur noch erklärst, wie die zeile "neu += arrayalt[j];" ausgeschrieben heißt, also ohne Abkürzung +=.. , dann bist echt mein Held des Tages
neu = neu + arrayalt[j] ???
also is das jetz wohl irgendwie rekursiv? wahrscheinlich.
kannst du mir das viell. an dem bsp. hier erklären?
man will ja neu an der stelle i bestimmen. also fängt die schleife an, neu an der stelle null = neu an der stelle null plus den wert des arrays in der zeile 0 - spalte 0.
mmh mmmh mmmmh. ich kappiers nicht.
wow. herzlichen dank Ariol. wenn du mir jetz nur noch erklärst, wie die zeile "neu += arrayalt[j];" ausgeschrieben heißt, also ohne Abkürzung +=.. , dann bist echt mein Held des Tages
man will ja neu an der stelle i bestimmen. also fängt die schleife an, neu an der stelle null = neu an der stelle null plus den wert des arrays in der zeile 0 - spalte 0.
mmh mmmh mmmmh. ich kappiers nicht.
hohoho.
oh mein gott. jetz bin ich komplett verwirrt.
wieso passiert, wenn ich die methode folgendermaßen veränder:
Code:
public static int[] verdichten(int[][] arrayalt){
int neu[] = new int[arrayalt.length];
for (int i = 0; i < arrayalt.length; i++){
for (int j = 0; j < arrayalt[i].length; j++){
neu [i] = arrayalt[i][j] ;
}
}
System.out.println (neu[0]);
folgendes, dass er mir für den Wert neu[0], 565 ausgibt und nicht 1375. Ich bin verwirrt und außerdem is jetzt Schlafenszeit. Gute Nacht euch. :gaen:
Naja, das mit den Codetags hat wohl nicht so geklappt.
Ein kleines Problem bei deinem Code ist, dass es nicht richtig funktioniert, wenn
1.)Produkt1 in mehr Fillialen vorkommt als Produkt2. (ArrayIndexOutOfBoundsException)
2.) genau umgekehrt (es wird nicht die komplette Summe von Produkt 2 ermittelt)
3.) eine Kombination aus beidem bei mehr als 2 Fillialen vorkommt.
Kannst ja mal versuchen was dann passiert:
Zu 1.)
Code:
int [][] arrayalt = new int [][] {{1375, 1466,1111},{3232,2525},{565,4365}};
Zu 2.
Code:
int [][] arrayalt = new int [][] {{1375, 1466},{3232,2525,1111},{565,4365}};
Zu 3.
Code:
int [][] arrayalt = new int [][] {{1375, 1466,1111},{3232,2525,1111,2222},{565,4365}};