【问题标题】:How would I solve this Encoder?我将如何解决这个编码器?
【发布时间】:2018-05-11 10:15:02
【问题描述】:

在开始之前,值得注意的是,我是一名学习编写 Java 代码的初学者。为了学习,我正在通过编码蝙蝠并解决它们。我刚遇到一个问题,我不知道从哪里开始,因为解决我想到的问题的方法不起作用。 Here is a link the coding bat.描述为:

当给定一个字符串数组(全部大写)时,单词会将每个字母更改为 10 个位置之外的字母。

我认为解决这个问题的方法是遍历字符串数组,将每个单独的字符串更改为一个字符数组,然后“编码”它,然后将全新的字符串返回到数组中。直到我注意到当我尝试将字符串转换为数组时才发现,我得到了一个错误。这是我到目前为止编写的代码的图片:https://gyazo.com/c2de83026b14d91cc908d853bf5834fe

所以我想我真正的问题是......我将如何解决这个问题?我的想法似乎不起作用,并且我尝试在字符串数组中使用的大多数字符串命令都不起作用。

【问题讨论】:

  • 您可以创建一个数组并将字母放入数组中。当您使用 yourString.charAt(i) 循环遍历字符串时,找到字符所在的索引,然后在该索引中添加 10 以找到您需要将当前字母更改为的字母。不要忘记使用mod,这样您在添加十后的最终范围保持在 26 以下。
  • 没有人想要您的代码的图片。代码是文本,所以请将其粘贴到问题中。然后它是可搜索的,如果有人想将其改编为答案,它是可复制的。

标签: java arrays string encoder


【解决方案1】:

您的方法是正确的,但您使用 toCharArray() 方法而不是 字符串数组。此方法用于stringchar 数组。你的代码可以是这样的:

public String[]  encoder(String [] words){
    ...
    //loop over string
    for (int i = 0; i < words.length; i++) {
        encodeString(words[i]);
    }

    ....
}

private String encodeString(String word){

    //toCharArray usage
    //loop over char
    for (char c : word.toCharArray()) {
        encodeChar(c);
    }

    ....
}

private String encodeChar(char c){
    //Your char conversion algorithm 
   ...
}

【讨论】:

    【解决方案2】:

    试试这个方法:

      private void buildReq(String input, int interval) {
        try {
            interval = interval % 26;
            int maxCap = Character.valueOf('Z');
            int minCap = Character.valueOf('A') - 1;
            input = input.toUpperCase();
            StringBuilder output = new StringBuilder();
            for (int i = 0; i < input.length(); i++) {
                int charVal = input.charAt(i);
                if (charVal >= minCap && charVal <= maxCap) {
                    int outVal = charVal + interval;
                    if (outVal > maxCap)
                        outVal = outVal % maxCap + minCap;
                    output.append((char) outVal);
                } else {
                    output.append((char) charVal);
                }
            }
            txtResponse.setText(output);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多