2017-05-01 2 views
0

Ich habe ein Array von String, das doppelte enthält. Ein Beispiel könnte ein String sein, der [5,., 2] enthält. Ich möchte die doppelte 2,5 sein.String-Array zu voller Nummer. ["2", "2"] bis 22, nicht [2, 2]

Ich weiß, das ist sehr verwirrend, aber die Art, wie ich diese Zahlen bekam, stammt von einem Input wie: "y = 2.5x + 4.3" (die Variable Ligning).

while(erTal(ligning.substring((ligning.indexOf("x")-i),(ligning.indexOf("x")-i+1))) == true){ 
         xVærdi.add(ligning.substring((ligning.indexOf("x")-i),(ligning.indexOf("x")-i+1))); 
         System.out.println("There's a number to the left of x. Der er tilføjet " + i + " tal i alt"); 
         i++; 
        } 

Methode überprüfen, ob String-Nummer:

public static boolean erTal(String str) { 
     if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/") || str.equals("=")){ 
      return false; 
     } else { 
      return true; 
     }  
    } 
+0

Was meinst du hier: *** [5,., 2] *** das sind keine Doppel .... –

+0

Nun, es ist eine Nummer. Ich möchte, dass es 2,5 (ein Doppel) ist, aber wie kann ich es umkehren? – Bassusour

Antwort

1

Sie leere Zeichenkette, die Elemente unter Verwendung als Trennzeichen (im Wesentlichen zum Verhängnis ligning) und diese Zeichenfolge dann analysieren beitreten können.

String[] ligning = {"2", ".", "5"}; 
String[] ligningReversed = new String[ligning.length]; 
for (int i = 0; i < ligning.length; i++) { 
    ligningReversed[i] = ligning[ligning.length - i - 1]; 
} 
double result = Double.parseDouble(String.join("", ligningReversed)); 

Dies funktioniert auch, wenn die Elemente keine einzelnen Ziffern sind.

+0

Danke dafür, aber die Ziffern werden nicht umgekehrt. Nehmen wir an, die Eingabe (Ligning) ist 2.3x, ich werde 3.2 auf diese Weise bekommen. Wie kann ich es umkehren, damit ich 2.3 bekomme? – Bassusour

+0

@Bassusour Sie müssen das Array umkehren, es gibt zahlreiche Möglichkeiten, dies zu tun. Ein einfaches Beispiel finden Sie in der aktualisierten Antwort. – Mateusz

+0

Danke für den Code, aber ich bekomme einen Fehler bei 'ligningReversed [i] = ligning [ligning.length - i - 1];' telling 'Array erforderlich, aber String gefunden ". – Bassusour

0

Versuchen Sie dieses, ich denke, dass das, was Sie suchen:

// reverse the string 
    String s = new StringBuilder("[5,.,2]").reverse().toString(); 
    // split the string with break expression 
    String[] str = s.split("\\b"); 
    //join the string with required format 
    StringJoiner sj = new StringJoiner("."); 
    for (String t : str) { 
     // to get digits only 
     if(t.matches("\\d+")){ 
      sj.add(t); 
     } 
    } 
    System.out.println(sj.toString()); 

Hoffnung, das hilft.