java - 如何将值从一种方法返回到另一种方法并交换

标签 java return-value swap

我有这个

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。 我想做的总结是“对于原始字符串中的每个字符,使用其在字母表中的位置来查找其在映射字符串中的替换。例如,字符串“dog”将被翻译为“jtp”。

最佳答案

此拼字游戏使用您提供的替换 map 。它还处理大写和小写大小写字母:

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"));
    }
}

关于java - 如何将值从一种方法返回到另一种方法并交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440604/

相关文章:

c++ - 在 C++ 中使用错误代码的更好方法是什么?

C++ 内置交换两个数值?

c++ - 重新实现 std::swap,我应该使用 const 作为 tmp 变量吗?

java - 使用 DataOutputStream 发送 0 字节?

c++ - auto 与 auto&& 函数返回值

PowerShell 转换从函数返回的值。如何避免这种情况?

c - 将数组作为参数传递并交换数据 - 意外数据

java - 访问我的java应用程序中的.txt文件并将其直接显示给用户

java - 我需要一个具有允许通配符的枚举类型的 XML 模式

java - 具有抽象类的 Setter