Ich habe nach der Lösung für mein Problem gesucht, aber keine scheint zu funktionieren. Eine spezielle Referenz - this und und insbesondere this. Wie auch immer ich sie implementiere, ich erhalte einen OutOfBoundsError, den ich nicht verstehen kann.Summe der Spalten und Zeilen des 2D-Arrays
Das Programm ist extra Kredit für eine Klasse. In Wahrheit ist es sehr einfach -
Programmbeschreibung: Verwenden Sie ein zweidimensionales Array, um das folgende Problem zu lösen. Ein Unternehmen hat vier Verkäufer (1 bis 4), die fünf verschiedene Produkte verkaufen (1 bis 5). Einmal am Tag gibt jeder Verkäufer für jede verkaufte Produktart einen Beleg ein. Jeder Schlicker enthält:
Die Vertriebsmitarbeiter Nummer
Die Produktnummer
Der Gesamtdollarwert des Produkts an diesem TagSo verkauft, jeder Verkäufer übergibt zwischen 0 und 5 Bons pro Tag. Nehmen Sie an, dass die Informationen aus allen Belegen des letzten Monats verfügbar sind. Jede Datenzeile enthält 3 Nummern (die Verkaufspersonennummer, die Produktnummer, den Umsatz).
Schreiben Sie ein Programm, das alle diese Informationen für Verkäufe des letzten Monats liest, und den Gesamtumsatz nach Verkäufer nach Produkt zusammenfasst.
Die zur Verfügung gestellten Daten:
1 2 121.77
1 4 253.66
1 5 184.22
1 1 97.55
2 1 152.44
2 2 104.53
2 4 189.97
2 5 247.88
3 5 235.87
3 4 301.33
3 3 122.15
3 2 301.00
3 1 97.55
4 1 125.66
4 2 315.88
4 4 200.10
4 3 231.45
der Fehler nur kommt, wenn es um die Spalten zu berechnen versucht. Meine Zeilen funktionieren; Egal wie ich die for-Schleife oder irgendeine der indezes in der Zeile oder Spalte des Arrays ändere, es funktioniert nicht. Zuerst wurden meine Zeilen getrennt berechnet, dann addierte sich meine Spalte und es funktionierte auch nicht. Es gibt etwas, das mir fehlt und das ich klar übersehe.
Hier ist mein Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.text.DecimalFormat;
import java.util.Scanner;
public class prog480u {
static Scanner inFile = null;
public static void main(String[] args) {
try {
// create scanner to read file
inFile = new Scanner(new File ("prog480u.dat"));
} catch (FileNotFoundException e) {
System.out.println("File not found!");
System.exit(0);
}
// make the array
int x = 0;
int y = 0;
double[][] profits = new double[4][5];
while (inFile.hasNext()) {
x = inFile.nextInt(); // use sales numbers as coordinates
y = inFile.nextInt();
profits[x - 1][y - 1] = inFile.nextDouble();
}
// check if it's okay
System.out.println("");
double[][] columnProfits = sums(profits);
for (int a = 0; a < columnProfits.length; a++) {
System.out.print((a+1) + "\t");
for (int b = 0; b < columnProfits[a].length; b++) {
System.out.print(columnProfits[a][b] + "\t");
}
System.out.println("");
}
double[] bottomRow = columnSums(columnProfits);
for (int a = 0; a < bottomRow.length; a++) {
System.out.print("Total:" + bottomRow + "\t");
}
}
public static double[][] sums (double[][] q) {
double[][] array = new double[5][6];
array = q;
double sum = 0;
for (int a = 0; a < array.length; a++) {
for (int b = 0; b < array[0].length; b ++) {
sum += array[a][b]; // add everything in the row
}
array[a][4] = sum; // set that row to the last column
sum = 0; // reset sum to 0
}
return array;
}
public static double[] columnSums (double[][]q) {
double[][] array = new double[5][6];
array = q;
double sum2 = 0;
double[] columns = new double [5];
for (int a = 0; a < array.length; a++) {
for (int b = 0; b < array[0].length; b ++) {
sum2 += array[b][a];
columns[b] = sum2;
}
sum2 = 0; // reset sum to 0
}
return columns;
}
}
Vielen Dank für Ihre Zeit. Ich habe das Gefühl, dass mein Programm kurz davor steht zu arbeiten, aber dieser kleine Fehler treibt mich über den Rand.
Es sieht aus wie Sie ein ‚+ =‘, kein ‚=‘ benötigen, wenn Sie die doppelte – mcraen