Programmr "replacing and converting Strings" Java



下面的程序包含一个名为"decrypt()"的空方法,该方法接受一个String参数。此方法将使用表示加密数字的字符串调用,您需要实现将它们转换为双值的逻辑。为了方便您,我们提供了一个二维字符数组和它们所代表的实际数字。如果你愿意,你可以使用这个数组。

我们期望的是:如果我们用字符串"b.aab"调用"decrypt()"方法,我们期望您返回1.001的双值。如果我们用字符串"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='';
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;

好吧,既然你已经解释了你的问题以及你遇到的问题,我就能帮你了。

您要做的是将chararray进行比较。你做不到。你需要为每个字符在数组上循环,例如:

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,将检索其"第一列"(索引0处)中的值。

最新更新