簡體   English   中英

我如何從一種方法返回值並交換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM