Probe getrennt: 1/2 3/4 5/6 7/8 9/10Wie in lesen und teilen eine Reihe von Zahlen durch Leerzeichen und Schrägstrich Eingang
Was ich erwarten, dass es zu tun: split zuerst Die Zeichenfolge basiert auf Leerzeichen. Sie erhalten also ein String-Array mit {1/2, 3/4, 5/6, 6/8, 9/10} und teilen dieses in ein Array mit ganzen Zahlen auf. intA {1, 2}, intB {3,4}, intC {5,6}, intD {7,8}, intE {9,10}, so dass ich sie schließlich in ein Bruchobjekt mit einem Zähler und einem Nenner übergeben kann. Hier
ist, was ich derzeit haben:
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
String str;
str = keyboard.nextLine();
String[] splitStr = str.split(" ");
Fraction[] input = new Fraction[10];
for(int i = 0; i < splitStr.length; i++)
{
String[] fract = splitStr[i].split("/");
int num = Integer.valueOf(fract[0]);
int den = Integer.valueOf(fract[1]);
double fraction = (double)num/den;
}
for(int i = 0; i < input.length; i++)
{
System.out.println(input[i]);
}
}
Wenn ich Eingabe der obigen Zeichenfolge, ich NULL-Werte zurück. Wenn ich irgendwelche Werte ohne Schrägstrich einfüge, so: 1/2 3/4 5/6 7 8 9/10
statt die 7 und 8 als 7/1 und 8/1 zu lesen, läuft das Programm in einen NullPointerException Fehler. Es muss einen einfacheren Weg geben, nicht wahr?
Vielen Dank! Ich habe es tatsächlich geschafft, die Brüche in das Array zu bringen, bevor ich Ihre Antwort sah, aber der Punkt, die Array-Länge "input" auf "splitStr" zu setzen, war hilfreich, ebenso wie die Eingabe einer ganzen Zahl. Ich denke, das ist ungefähr so kompakt, wie Sie den Code in Java bekommen können. Ich fühlte mich in einem Meer von Indizes verloren. –
Könnten Sie vielleicht erklären, was der praktische Unterschied zwischen 'Integer.parseInt()' und 'valueOf()' ist? –
@AxelFinkel Details dazu finden Sie [HIER] (http://stackoverflow.com/questions/508665/difference-between-parseint-and-valueof-in-java). Normalerweise werden Listen anstelle von Arrays verwendet, die Größe einer Liste kann geändert werden und es ist einfacher, sie zu iterieren. – Titus