[英]How can i return value from one method to another & swapping
我有这个
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”。 ”
这与您提供的替换地图兼容。 它还处理大写和小写字母:
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"));
}
}
如果您尝试设置字符超出缓冲区,StringBuffer.setCharAt()将引发异常。 您没有在缓冲区中放入任何东西。
另外,请看一下创建缓冲区的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.