下面的程序包含一个名为'decrypt()'的空方法,它接受一个String参数。将使用表示加密数字的字符串调用此方法,您需要实现将它们转换为double值的逻辑。为方便起见,我们提供了二维字符数组及其代表的实际数字。如果您愿意,可以使用该数组。
我们的期望:如果我们使用字符串“b.aab”调用'decrypt()'方法,我们希望您返回1.001的double值。如果我们用String“ab.a”调用'decrypt()'方法,我们希望你返回1.0的双倍值
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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) {
///{
//write your code here
//start
//end
///}
}
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));
}
}
我尝试了一些变种,但我无法理解如何将字符串与char类型进行比较。我不知道即使它是可能的,也可能是正确的方法。我尝试使用toChar方法将输入字符串拆分为转换为char,但问题是如何将char与2d数组进行比较?即使我使用嵌套for循环,我也无法获得正确的解决方案。我完全失去了这个问题。
我也试过以下代码:
char[] splitNumber=encryptedNumber.toCharArray();
for (int i=0;i<splitNumber.length;i++)
{
if(splitNumber[i]=conversionTable.charAt(i))
{
String str=str+splitNumber[i];
}
}
但是conversionTable.charAt(i)不起作用
以下是解决方案:
public static double decrypt(String encryptedNumber) {
///{
//write your code here
//start
//char[] splitNumber=encryptedNumber.toCharArray();
String str="";
char compare='\0';
for (int i=0;i<encryptedNumber.length();i++)
{
compare=encryptedNumber.charAt(i);
if (compare=='.')
{
str=str+".";
}
for(int j=0;j<conversionTable.length;j++)
{
if(compare==conversionTable[j][0].charAt(0))
{
str=str+conversionTable[j][1];
}
}
}
System.out.println(str);
double dValue=Double.parseDouble(str);
return dValue;
答案 0 :(得分:0)
好的,既然你已经解释了你的问题以及你被困在哪里,我就能更好地帮助你。
您要做的是将char
与array
进行比较。你无法做到。您需要为每个字符循环遍历数组:
char[] splitNumber = encryptedNumber.toCharArray();
for (int i=0; i < encryptedNumber.length(); i++) {
char c = encryptedNumber.charAt(i);
for (int j=0; j < conversionTable.length; j++) {
if (c == conversionTable[j][0].charAt(0)) {
// do whatever you want here
}
}
}
内部循环将迭代数组的行,并且对于每行j,将检索其中的值&#39;第一列(索引0)。