尝试在Java中重新分配并输出新的设置值

时间:2011-12-08 18:09:27

标签: java

我正在为我的小弟弟创建一个有趣的Java“Gibberish Translator”。他是精神残疾人,我相信他会得到一些帮助。 :)我知道如何接受输入以及如何显示输出。然而,我想要做的远远超过我的Java知识。 (如果它是尽可能的话。)我希望当我的兄弟在文本字段中键入内容然后按下按钮时,文本区域中将显示完全不同的文本。我希望能够为每个字母分配不同的字母或字母组合。这样,每次他使用字母“i”时,它总是会显示“ti”。我希望输出完全是胡乱和有趣的阅读。如果可以这样做,请帮我分配,并为每个字母输出不同的设定值。我对编码很新,所以请加入示例。

提前致谢。

(我还没有插入代码,因为我还没有在计算机上开始编码。我想确保在开始努力工作之前就可以完成。:))

2 个答案:

答案 0 :(得分:3)

完全胡言乱语比定义难以定义。换句话说,在实现翻译模式之后,它看起来不像“完全乱码”。用你的例子来解释,看起来所有“我”都被翻译成“ti”。

也就是说,您可以轻松地执行一些涉及“输入”数据集“映射”到“输出”字符集的操作。像

这样的东西
i -> ti
j -> kj
l -> vn

等等。然后,您一次“替换”输入一个字符的输入。如果您仔细选择输入“地图”的“右侧”,您甚至可以“反转”地图,或者做一个向后翻译。不是每个地图都可以颠倒过来,但是这个练习可以让你很好地理解关键数学(不是数字意义上的)概念。

手动翻译至少五次(或更多次)。专注于您手动执行此操作所遵循的步骤,因为它们将成为您在程序中“编码”所需的步骤。可能性看起来像这样(但不要相信我的话,为自己发现它)

  1. 查看“下一个”字符
  2. 在翻译“map”的“输入”一侧找到它
  3. 阅读刚刚访问过的“地图条目”的“输出”一侧
  4. 在纸上写下当前的“输出”翻译
  5. 在步骤#1重复,直到“字符数不足”
  6. 当您遇到困难时,请随时发布更多问题。尝试将问题保持特定并提供代码示例。要充分利用问题,请遵循"How to ask good questions"的建议。这样做会给你最大的帮助。

答案 1 :(得分:1)

创建一个Map<Character, String>,其中包含每个字符的替换文字。迭代输入字符串的所有字符,并将地图中找到的替换附加到StringBuilder

这是一些代码。您只需要向地图添加其他替换项:

import java.util.HashMap;
import java.util.Map;

public class Gibberish {
    public static void main(String[] args) {
        System.out.println(gibberish("Hi, I'm Jim"));
    }

    public static String gibberish(String input) {
        Map<Character, String> replacements = new HashMap<Character, String>();
        replacements.put('i', "ti");
        // ...

        StringBuilder output = new StringBuilder();
        for (char c : input.toCharArray()) {
            String replacement = replacements.get(c);
            // if no replacement, we keep the character
            if (replacement == null) {
                output.append(c);
            }
            else {
                output.append(replacement);
            }
        }
        return output.toString();
    }
}