/ / Wie ersetze ich Zeichen in einer Zeichenkette und konvertiere sie nach double? - Java

Wie ersetze ich Zeichen in einer Zeichenkette und konvertiere sie nach double? - Java

Das zweidimensionale Array ist ab sofort eine reine Referenz. Ich muss wissen, wie man Zeichen in einer Zeichenkette durch entsprechende Ganzzahlen ersetzt und sie im doppelten Format anzeigt.

Zum Beispiel nach conversionTable ---> [Input: "ab.a" , Output: "1.0"] ODER [Input: "a.jjj" , Output: "0.999"]. Ich versuche, dieses durch Schalterfall zu erzielen, aber es gibt Störung. Wie kann ich diesen durch Schalterfall ODER sogar leistungsfähiger erzielen?

package practice;

import java.util.Scanner;
import java.lang.Double;
public class Decrypt {

private static String conversionTable[][] = {
{"a", "0"},
{"b", "1"},
{"c", "2"},
{"d", "3"},
{"e", "4"},
{"f", "5"},
{"g", "6"},
{"h", "7"},
{"i", "8"},
{"j", "9"},
};

public static double decrypt(String encryptedNumber) {

String input = encryptedNumber;

switch(input.length()){

case "a":
System.out.print(input.replace("a", "0"));
break;

case "b":
System.out.print(input.replace("b","1"));
break;

case "c":
System.out.print(input.replace("c", "2"));
break;

case "d":
System.out.print(input.replace("d","3"));
break;

case "e":
System.out.print(input.replace("e","4"));
break;

case "f":
System.out.print(input.replace("f","5"));
break;

case "g":
System.out.print(input.replace("g","6"));
break;

case "h":
System.out.print(input.replace("h","7"));
break;

case "i":
System.out.print(input.replace("i","8"));
break;

case "j":
System.out.print(input.replace("j","9"));
break;
}


Double d = new Double("");
double result = Double.parseDouble(input);
return result;


}

public static void main(String arg[]){

Scanner scanner =new Scanner(System.in);
System.out.println("Enter the string to decrypt:");
String input=scanner.next();
System.out.println("Number after decryption is:"+decrypt(input));

}

}

Antworten:

0 für die Antwort № 1

Ich würde etwas mit verwenden (char) ("0" + (ch - "a")) weil wir wissen, dass "a" "a" ist und "b" - "a" "1" sein sollte. Beispielsweise,

private static String decryptString(String en) {
if (en == null) {
return "";
}
en = en.trim().toLowerCase();
StringBuilder sb = new StringBuilder();
for (char ch : en.toCharArray()) {
if (ch >= "a" && ch <= "j") {
sb.append((char) ("0" + (ch - "a")));
} else {
sb.append(ch);
}
}
return sb.toString();
}

public static Double decrypt(String encryptedNumber) {
return Double.valueOf(decryptString(encryptedNumber));
}

public static void main(String[] args) {
System.out.println(decrypt("ab.a"));
System.out.println(decrypt("a.jjj"));
}

Ausgabe ist (wie gewünscht)

1.0
0.999

0 für die Antwort № 2

Schreiben Sie einfach eine sehr hässliche:

public static void main(String[] args) {
String[] index = {"a","b","c","d","e","f","g","h","i","j"};

String str= "ab.a";
String strNew = str;
for(int i=0;i<index.length;i++){
strNew = strNew.replaceAll(index[i], String.valueOf(i));
}

System.out.println(Double.parseDouble(strNew));
}