【问题标题】:"Cycle" through specific ASCII code-range通过特定的 ASCII 代码范围“循环”
【发布时间】:2025-12-04 22:20:03
【问题描述】:

我应该用 Java 创建一个程序,它从用户那里获取一个大写字母,从 ASCII 代码中减去 2 并输出结果字母。线索是我应该只输出 A-Z 的字母,意思是 Z 之后它又从 A 开始。 做这个的最好方式是什么?如果达到某个值,则删除 26 的明显方法似乎不合适。

希望有人可以帮助我。提前致谢!

【问题讨论】:

  • 使用什么编程语言?
  • 对不起,我用的是Java!

标签: java char ascii


【解决方案1】:

Java 中的字符可以被视为数字,您可以对它们执行普通算术运算。 “A”的字节值等于 65(即在 ASCII 表中,大写 A 是第 65 个 ASCII 表,大写 B 是 66,等等)。我写了一些简单的代码,分解了所需的步骤:

letter = (letter - 65);
letter = (letter - 2);
if (letter < 0) letter = letter + 26;
letter = letter + 65;

第一行减去 'A' 在 ASCII 表中的位置。这意味着“A”变为 0,“B”变为 1,等等。下一行减去 2,下一行确保它“循环”到字母表的末尾,如果 减法导致它变为负数。最后一行将 65 添加回字母,将其返回为 ASCII 表中的大写字母。

【讨论】:

  • 谢谢!我试过了,首先我需要为每一行添加演员表是否正确?因为我不能在那里使用字符串。此外,它不会像预期的那样工作。它不会在字母表中循环,它只是倒退 2 个,导致“?”如果您输入“A”。知道为什么吗?阅读您的代码后,我确信它会像这样工作:O 好的,好吧,它总是输出一个“?”......我很困惑......我发现如果你将字母 ,它会像预期的那样工作0 但我不明白为什么:O