2016-03-28 2 views
0

Der Titel spricht für sich. Ich versuche, einen Taschenrechner zu erstellen, der polynomiale Funktionen unter Verwendung der grundlegenden Kodierung integriert, nicht nur einen Matheoperator herauspeitschen, um es für mich zu tun :). Ich musste nicht weit gehen, bis ich gegen eine Wand stoße, da ich keinen Weg finde: eine Teilkette der Zahlen in der ursprünglichen Zeichenkette zu erzeugen, bis ein nicht-numerisches Zeichen erreicht ist. Wenn die Zeichenfolge 123x ist, möchte ich eine Teilzeichenfolge von 123 ohne das "x" erstellen. Hier ist, was ich bisher habe:Java - Wie wird eine Teilzeichenfolge erstellt, bis ein nicht numerisches Zeichen erreicht wird?

public static void indefinite() 
{ 
    int x = 0; 
    System.out.print("Enter your function to integrate:\n F "); 
    Scanner input = new Scanner(System.in); 
    String function = input.nextLine(); 
    String s1 = ""; 
    for (int i = 0; i < function.length(); i++) 
    { 
     s1 = s1 + function.substring(x, i+1); 
     x = i+1; 
    } 
} 

Alles ein bisschen unsinnig aussieht, aber im Grunde, wenn die Zeichenfolge ‚Funktion‘ ist 32x^4, möchte ich die Teilkette auf sein 32. Ich werde Figur den Rest selbst aus, aber diesen Teil kann ich nicht tun.

p.s. Ich weiß, dass die Wiederholungsvariable der for-Schleife falsch ist, sie sollte sich nicht bis zum Ende des Strings wiederholen, wenn ich Funktionen mit mehr als nur 2x^3 betrachte. Ich bin noch nicht herumgekommen, um das herauszufinden, also habe ich nur dafür gesorgt, dass es für 1 Teil geht.

Antwort

2

Sie die Zeichenfolge an den Buchstaben-Ziffern-Noten aufgeteilt könnte, etwa so:

str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); 

Zum Beispiel: "123x54y7z" kehrt [123, x, 54, y, 7, z]

1

Verwenden replaceAll() zu "extrahieren" es:

String number = str.replaceAll("\\D.*", ""); 

Dies ersetzt die erste nicht-Ziffer und alles danach mit nichts (effektiv löschen), so dass Sie nur mit der Nummer.

Sie können auch direkt in einen numerischen primitiven gehen, ohne eine String Variable zu verwenden, wenn Sie (wie ich) bevorzugen weniger Code zu haben:

int number = Integer.parseInt(str.replaceAll("\\D.*", "")); 
Verwandte Themen