Das ist, was ich will:
Lassen Sie den Benutzer so viele Nummern eingeben, wie sie wollen, bis eine Nicht-Nummer eingegeben wird (Sie können davon ausgehen, dass es weniger als 100 Nummern geben wird). Finde die am häufigsten eingegebene Nummer. (Wenn gibt es mehr als eine, alle von ihnen drucken.)
Beispiel Ausgang:
Input: 5
Input: 4
Input: 9
Input: 9
Input: 4
Input: 1
Eingabe: a
Am häufigsten: 4, 9
Ich bin an den Punkt in meinem Code, wo ich es geschafft habe herauszufinden, welche die häufigsten Zahlen sind. Ich möchte jedoch nicht immer wieder die gleiche Nummer ausdrucken; Beispiel von oben: Am häufigsten: 4, 9, 9, 4
Was ist zu tun?Wie kann ich die Wiederholung derselben Nummer vermeiden?
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] input = new String[100];
System.out.print("Input: ");
input[0] = in.readLine();
int size = 0;
for (int i = 1; i < 100 && isNumeric(input[i-1]); i++) {
System.out.print("Input: ");
input[i] = in.readLine();
size = size + 1;
}
/*for (int i = 0; i < size; i++) { //testing
System.out.println(input[i]);
}*/
int numOccur;
int[] occur = new int[size];
for(int i = 0; i < size; i++) {
numOccur = 0;
for (int j = 0; j < size; j++) {
if(input[i].equals(input[j])) {
numOccur = numOccur + 1;
}
}
occur[i] = numOccur;
//System.out.println(numOccur); //testing
}
int maxOccur = 0;
for(int i = 0; i < size; i++) {
if(occur[i] > maxOccur) {
maxOccur = occur[i];
}
}
//System.out.println(maxOccur); //testing
for (int i = 0; i < size && !numFound; i++) {
if(occur[i] == maxOccur) {
System.out.println(input[i]);
}
}
}
//checks if s is an in, true if it is an int
public static boolean isNumeric (String s) {
try {
Integer.parseInt(s);
return true; //parse was successful
} catch (NumberFormatException nfe) {
return false;
}
}
Die Lösung gefunden!
String[] mostCommon = new String[size];
int numMostCommon = 0;
boolean numFound = false;
for (int i = 0; i < size; i++) {
int isDifferent = 0;
if (occur[i] == maxOccur) {
for (int j = 0; j < size; j++) {
if (!(input[i].equals(mostCommon[j]))) {
isDifferent = isDifferent + 1;
}
}
if (isDifferent == size) {
mostCommon[numMostCommon] = input[i];
numMostCommon = numMostCommon + 1;
}
}
}
for (int i = 0; i < numMostCommon - 1; i++) {
System.out.print("Most common: " + mostCommon[i] + ", ");
}
System.out.println(mostCommon[numMostCommon - 1]);
Sind das Hausaufgaben? –
yeap, Entschuldigung vergessen, das Tag hinzuzufügen. Ich habe nur gelernt, Funktionen, Arrays, für & While-Loops – user1215225