java - 如何在字符串中切换字母
问题描述
我正在做一个项目,问题要求我切换数组中的特定字母。例如,a 到 z,b 到 y,c 到 x 等等......
我写了这个:
import java.util.Scanner;
public class Project1
{
public static void main( String [] args )
{
System.out.println("This program helps to encode or decode some text, the concept is that an A turns into a Z, B into a Y etc.");
Scanner reader = new Scanner ( System.in );
System.out.print("What is your message (encoded or not): ");
String Sentence = reader.nextLine();
System.out.println();
System.out.print("Press 1 to encode and 2 to decode: ");
int Number = reader.nextInt();
if ( Number == 1)
{
Encode (Sentence);
}
else if ( Number == 2)
{
Decode (Sentence);
}
else
{
System.out.println("The number has to be 1 or 2.");
}
}
public static void Encode (String a)
{
a = a.replace( 'a' , 'z' );
a = a.replace( 'b' , 'y' );
a = a.replace( 'c' , 'x' );
a = a.replace( 'd' , 'w' );
a = a.replace( 'e' , 'v' );
a = a.replace( 'f' , 'u' );
a = a.replace( 'g' , 't' );
a = a.replace( 'h' , 's' );
a = a.replace( 'i' , 'r' );
a = a.replace( 'j' , 'q' );
a = a.replace( 'k' , 'p' );
a = a.replace( 'l' , 'o' );
a = a.replace( 'm' , 'n' );
a = a.replace( 'n' , 'm' );
a = a.replace( 'o' , 'l' );
a = a.replace( 'p' , 'k' );
a = a.replace( 'q' , 'j' );
a = a.replace( 'r' , 'i' );
a = a.replace( 's' , 'h' );
a = a.replace( 't' , 'g' );
a = a.replace( 'u' , 'f' );
a = a.replace( 'v' , 'e' );
a = a.replace( 'w' , 'd' );
a = a.replace( 'x' , 'c' );
a = a.replace( 'y' , 'b' );
a = a.replace( 'z' , 'a' );
System.out.println("Encoded message is: " + a);
}
public static void Decode ( String s)
{
s = s.replace( 'z' , 'a' );
s = s.replace( 'y' , 'b' );
System.out.println("Decoded message is: " + s);
}
}
但是,当我输入一个带有 a 的单词时,它会变成 az,然后又变成 a 。我想知道是否有任何其他方法可以像这样从一个字母切换到另一个字母,这样问题就不会再次发生。
解决方案
我认为最简单的方法是遍历您的String
,分别更改每个字符。在 a 中执行此操作可能是最简单的char[]
,您可以在最后将其转换回 a String
。
此外,您不需要单独的encode
anddecode
方法,因为编码和解码 aString
是完全相同的转换。
public String encode(String toEncode) {
char[] characters = toEncode.toCharArray();
for (int index = 0; index < characters.length; index++) {
if (characters[index] >= 'a' && characters[index] <= 'z') {
characters[index] = (char)('a' + 'z' - characters[index]);
}
}
return new String(characters);
}
注意char
中间的算术,它将转换a
为z
,b
toy
等等。该if
条件确保您不会替换任何不是小写字母的字符。
推荐阅读
- sql - MS Access SQL 直通查询
- css - Chrome 的奇怪网格行为
- sccm - WQL 喜欢和不喜欢多值组合
- r - 如何将表数据放入向量/列表?
- python - 如何下载熊猫数据框?
- flutter - 将文本放入容器中(FLUTTER)
- selenium - 如何编写 Xpath Pseudo - Element ::before
- android - 如何在 ViewPager 中包含 LibGDX 场景?
- mule - 如何在 DataWeave 中将带时区的时间戳转换为 LocalDateTime
- android - 如何将 void 函数传递给重写的 OutlineButton 类以用作 onPressed 属性