Как я могу вернуть значение из одного метода в другой и обмен - PullRequest
1 голос
/ 14 декабря 2010

У меня есть это

public class Mapper implements ScramblerIF
{
 private static String map = "drsjckpwrypwsftylmzxopqtdo";

public static String charAt(String str) 
{
 //char[] chars = str.toCharArray();
int length = str.length();

 for(int i=0; i<length; i++)
{
 char aChar = str.charAt(i);
 char upper = Character.toUpperCase(aChar);
 int num = (upper - 'A');
char mChar = map.charAt(num);
 //String chard = Character.toString(mChar);

 StringBuffer buf = new StringBuffer( str);
   buf.setCharAt( i, mChar );
 }
   return str;
 }

public String scramble(String str) {
return charAt(str);
 }
}

Я пытаюсь получить его там, где метод

 public String scramble(String str) {
return charAt(str);
 }

возвращает вычисленное значение из метода

 public static String charAt(String str)

,Не знаю, где я ошибся.

Кроме того, вместо использования

StringBuffer buf = new StringBuffer( str);
   buf.setCharAt( i, mChar );

, как я мог бы использовать функцию подкачки?Когда я пытаюсь

 char temp = chars[i];
chars[i] = chars[mChar];
chars[mChar] = temp;

, я получаю ArrayIndexOutOfBoundsException.Резюме того, что я пытаюсь сделать: «Для каждого символа в исходной строке используйте его положение в алфавите, чтобы найти его замену в строке карты. Например, строка« собака »будет переведена в« jtp »."

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Это scrables с картой замены , которую вы предоставили. Он также обрабатывает верхний и нижний регистр букв:

public class Mapper {
    //                           abcdefghijklmnopqrstuvwxyz
    private static String map = "drsjckpwrypwsftylmzxopqtdo";

    public static String scramble(String str) {

        if (!str.matches("[A-Za-z]*"))
            throw new RuntimeException(str + " contains weird characters");

        String out = "";
        for (char c : str.toCharArray()) {
            if (Character.isUpperCase(c)) {
                out += Character.toUpperCase(map.charAt(c - 'A'));
            } else {
                out += map.charAt(c - 'a');
            }
        }

        return out;

    }

    public static void main(String[] args) {
        System.out.println(scramble("David"));
    }
}
0 голосов
/ 14 декабря 2010

StringBuffer.setCharAt () сгенерирует исключение, если вы попытаетесь установить символ вне буфера.Вы ничего не поместили в буфер.

Кроме того, посмотрите, когда вы создаете буфер.

...