Diese Frage bezieht sich auf das, das ich vor 4 Tagen erstellt habe here.
Was ich tun muß, ist ein Vertikale Histogramm zu schaffen, die die occurencies von Studenten der Noten lesen (von 1 bis 10), die in einer TXT-Datei wie folgt aufgeführt ist:Vertikales Histogramm nicht richtig angezeigt
Mark 2
Elen 3
Luke 7
Elen 9
Jhon 5
Mark 4
10 Elen
Luke 1
Jhon 1
Jhon 7
Elen 5
Mark 3
Mark 7
Hier ist mein Code:
import java.util.Scanner;
import java.io.*;
public class GradeHistogram {
public static void main(String[] args) throws IOException {
Scanner fileScan = new Scanner(new File("RegistroVoti.txt"));
String line;
char currentChar;
int [] array = new int [10];
int max = 0, currentValue;
while (fileScan.hasNext()) {
line = fileScan.nextLine();
for(int j=0; j < line.length(); j++) {
currentChar = line.charAt(j);
if (currentChar == '1')
array[0]++;
else if (currentChar == '2')
array[1]++;
else if (currentChar == '3')
array[2]++;
else if (currentChar == '4')
array[3]++;
else if (currentChar == '5')
array[4]++;
else if (currentChar == '6')
array[5]++;
else if (currentChar == '7')
array[6]++;
else if (currentChar == '8')
array[7]++;
else if (currentChar == '9')
array[8]++;
else if (currentChar == '0')
array[9]++;
}
}
for(int i = 0; i <= 9; i++) {
if (array[i] > max)
max = array[i];
}
currentValue = max;
for(int i = max; i > 0; i--) {
for(int j = 0; j < 10; j++) {
if(array[j] < i)
System.out.print(" ");
else
System.out.print("*");
}
System.out.println();
}
System.out.println("12345678910");
}
}
Da jedoch die charAt()
Verfahren ein Sternchen auf die einzelnen char
basiert druckt er fügt hinzu, fügt es die Askerisks hinzu, die auf "10" in der Zahl "1" Spalte sind.
ich tatsächlich versucht, die nextInt()
Methode durch den Code ändern, aber wenn ich es lief, wurden keine Sternchen ...
gezeigt Wie kann ich dieses Problem lösen?
Jede Rückmeldung ist willkommen!
Vielen Dank im Voraus!