java - 尝试编码但有问题

标签 java arrays encoding

我试图对用户输入进行编码,方法是将其转换为字符数组,然后对其进行编码,然后再次将其转换为字符串以将其打印出来,但是出现了问题(假设将 A 转换为 Z , B 转换为 Y 等...)和( a 转换为 z , b 转换为 y) ,帮助我被困了几个小时。

import java.util.*;
public class PartA {

  public static void main(String args[]) {
    PartA one = new PartA();
    String i = one.encode();
    System.out.println(i);
  }

  public String encode() {
    Scanner input = new Scanner(System.in);
    String word = input.nextLine();
    char ch[] = word.toCharArray();
    for (int x = 0; x <= ch.length; x++) {

      if (ch[x] >= 'A' || ch[x] >= 'z') {
        ch[x] = (char)(ch[x] + 25);
      }
    }
    String enc = ch.toString();
    return enc;
  }
}

最佳答案

您需要考虑进行此转换的逻辑。

第一步是研究 ASCII table并找到您所需要的背后的逻辑。

例如,如果您需要转换 Z 中的 AY 中的 B 等,请查找相关性:

A - Z
65 - 90

B - Y
66 - 89

C - X
67 - 88

...

对于azby也是如此...

此代码可以解决您的问题:

import java.util.*;

public class PartA {

    private final static int A_UPPER_ASCII_NUMBER = 65;
    private final static int A_LOWER_ASCII_NUMBER = 97;

    public static void main(String args[]) {
        PartA one = new PartA();
        String i = one.encode();
        System.out.println(i);
    }

    public String encode() {
        Scanner input = new Scanner(System.in);
        String word = input.nextLine();
        char ch[] = word.toCharArray();
        for (int x = 0; x < ch.length; x++) {

            if (ch[x] >= 'A' && ch[x] <= 'Z') {
                int res = (25 + (A_UPPER_ASCII_NUMBER - ch[x]) * 2);
                ch[x] = (char) (ch[x] + res);
            }

            if (ch[x] >= 'a' && ch[x] <= 'z') {
                int res = (25 + (A_LOWER_ASCII_NUMBER - ch[x]) * 2);
                ch[x] = (char) (ch[x] + res);
            }
        }
        String enc = ch[0] + "";
        return enc;
    }
}

当然,同一件事有更好的逻辑。

关于java - 尝试编码但有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929491/

相关文章:

python - 在Python中将非标准字符解码为UTF 8

c - 用户输入并插入数组

c - 在C中离开for循环后丢失结构数组中的值

perl - 如何在 perl 中转储字符串以查看是否存在任何字符差异?

java - 如何在Fragment中实现onClick?

arrays - 如何仅映射非空值?

Windows 上的 R : character encoding hell

java - FragmentActivity - 缩放以显示街道

java - 如果存在重复的键,如何将键的值添加到 HashMap 中的另一个键

java - 具有不同 namespace 的 JAXB 片段