2015-04-13 4 views
-5

В приведенной ниже программе содержится пустой метод под названием «decrypt()», который принимает аргумент String. Этот метод будет вызываться со строками, которые представляют зашифрованные числа, вам необходимо реализовать логику, которая преобразует их в двойное значение. Для вашего удобства мы предоставили двухмерный массив символов и фактическое число, которое они представляют. Вы можете использовать этот массив, если хотите.Программа «замена и преобразование строк» ​​Java

Что мы ожидаем: если мы назовем метод 'decrypt()' строкой "b.aab", мы ожидаем, что вы вернете двойное значение для 1.001. Если мы называем метод с String «ab.a» в «) (Расшифровать», мы ожидаем, что вы вернуть двойное значение 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. Я не знаю, даже если это возможно, или это правильный способ сделать это. Я попытался расщепить входную строку для преобразования в char с помощью метода toChar, но тогда проблема заключается в том, как я могу сравнить char с массивом 2d? Кроме того, даже если я использую вложенные петли, я не смогу получить правильное решение. Поэтому я полностью потерял здесь эти вопросы.

Я попытался следующий код, а также:

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 (я) не работает

Далее следует решение:

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

нам нужно написать код ?? или вы что-то пробовали? – Prashant

+6

Добро пожаловать в StackOverflow. Этот сайт не «копирует и вставляет мой вопрос о домашнем задании здесь, кто-то, пожалуйста, решите его для меня». Вам нужно показать некоторые усилия и объяснить, где вы застряли, что вы пробовали до сих пор, что вас озадачивает, и так далее. В противном случае люди вряд ли захотят помочь вам. –

+0

Используйте «Карта» вместо 2-мерного массива, иначе вам нужно пройти, чтобы получить соответствующий ключ. – Masudul

ответ

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, будет получать значение в его первом колонке (по индексу 0).

+0

Спасибо, что это сработало для меня. Наконец, я закончил свою программу. Я хочу поддержать ваш ответ, но поскольку все вы отказались от моего вопроса, у меня нет 15 очков, которые необходимы для повышения :( –

+0

Это очень хорошо, я просто рад, что смогу помочь. Поскольку вы зададите больше вопросов , вы, вероятно, узнаете об этом. Теперь вы лучше поймете, как задать вопрос о StackOverflow. Как только вы объясните, в чем ваша проблема, в частности, вы получите больше ответов и больше бонусов, чем downvotes. –

Смежные вопросы