Programmr“替换和转换字符串”Java

时间:2015-04-13 06:27:11

标签: java

下面的程序包含一个名为'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;

1 个答案:

答案 0 :(得分:0)

好的,既然你已经解释了你的问题以及你被困在哪里,我就能更好地帮助你。

您要做的是将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,将检索其中的值&#39;第一列(索引0)。