Java 如何让我的porgram逐个字符地筛选用户输入(使用扫描仪库)?

Java 如何让我的porgram逐个字符地筛选用户输入(使用扫描仪库)?,java,encoding,java.util.scanner,decoding,Java,Encoding,Java.util.scanner,Decoding,我正在为一个高中班编写一个小程序,希望获取用户的输入(例如:“Hello”),将其分成不同的字符(“Hello”->“h”、“e”、“l”、“l”、“o”),然后将字符移动到字母表中的一个位置(“Hello”->“Ifmmp”)。使用java有没有一种简单的方法来执行此操作?您可以使用带有空分隔符的扫描仪来检索字符: String in = "abc"; Scanner s = new Scanner(in); s.useDelimiter(""); while (s.hasNext()) {

我正在为一个高中班编写一个小程序,希望获取用户的输入(例如:“Hello”),将其分成不同的字符(“Hello”->“h”、“e”、“l”、“l”、“o”),然后将字符移动到字母表中的一个位置(“Hello”->“Ifmmp”)。使用java有没有一种简单的方法来执行此操作?

您可以使用带有空分隔符的
扫描仪来检索字符:

String in = "abc";
Scanner s = new Scanner(in);
s.useDelimiter("");
while (s.hasNext()) {
    System.out.println(s.next());
}

您可以使用带有空分隔符的
扫描仪
检索字符:

String in = "abc";
Scanner s = new Scanner(in);
s.useDelimiter("");
while (s.hasNext()) {
    System.out.println(s.next());
}

您需要将字符串转换为一个字符数组,然后在其中循环并递增每个字符。请看下面的帖子。

您需要将字符串转换为一个字符数组,然后在其中循环并递增每个字符。请看下面的帖子。
首先要意识到的是,java中的
char
类型(表示单个字符)被视为一个数字(您可以在ASCII表中查找常规字符的数字值)

因此,这个过程将遍历原始
字符串中的所有字符,并为每个字符添加1。如果这些都添加到第二个
字符串中
,则该字符串将包含一步移动的所有字符

String originalString = "hello";
// Use a StringBuilder to save all the characters
StringBuilder builder = new StringBuilder();

for (char c : originalString.toCharArray()) {
  // Add 1 to each character and append it
  builder.append((char) (c + 1));
}

// Now the builder contains the String with the shifted values
System.out.println(builder);

首先要认识到的是java中的
char
类型(表示单个字符)被视为一个数字(您可以在ASCII表中查找常规字符的数值)

因此,这个过程将遍历原始
字符串中的所有字符,并为每个字符添加1。如果这些都添加到第二个
字符串中
,则该字符串将包含一步移动的所有字符

String originalString = "hello";
// Use a StringBuilder to save all the characters
StringBuilder builder = new StringBuilder();

for (char c : originalString.toCharArray()) {
  // Add 1 to each character and append it
  builder.append((char) (c + 1));
}

// Now the builder contains the String with the shifted values
System.out.println(builder);

你甚至不需要扫描仪来检查字符串。不过,您可以使用扫描仪获取用户输入。然后您只需逐个字符地查看字符串并对其进行操作。但要小心:在本例中,当字符为“z”或“z”时,它将被更改为错误的字符。因此,您必须适当地处理ascii代码:

char[] chars = "abc".toCharArray();

for (int i = 0; i < chars.length; i++) {
    chars[i] = (char) (chars[i] + 1);
}

String s = new String(chars);
System.out.println(s);
char[]chars=“abc.tocharray();
for(int i=0;i
打印出:


bcd

您甚至不需要扫描仪来检查字符串。不过,您可以使用扫描仪获取用户输入。然后您只需逐个字符地查看字符串并对其进行操作。但要小心:在本例中,当字符为“z”或“z”时,它将被更改为错误的字符。因此,您必须适当地处理ascii代码:

char[] chars = "abc".toCharArray();

for (int i = 0; i < chars.length; i++) {
    chars[i] = (char) (chars[i] + 1);
}

String s = new String(chars);
System.out.println(s);
char[]chars=“abc.tocharray();
for(int i=0;i
打印出:

bcd

简介 我们将像往常一样使用
扫描仪
使用
nextLine
扫描用户输入。检索用户输入后,我们将其转换为
char
s数组,并使用字母表数组中包含的
char
检查每个
char

如果输入的
字符串
包含一个符号将被替换为
a
的数字-如果您不希望出现这种行为,我相信您可以自己找到如何更改的方法

实施 以下是我们将要做的:

// Scanner to scan for user input
// Array of ‘char’s containing entire alphabet
Scanner scanner = new Scanner(System.in);
char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
char[] input = scanner.nextLine().toCharArray();

// Go over chars inside input
for(int i = 0; i < input.length; i ++)
{
    char c = input[i];

    // Go over alphabet in search for corresponding char
    // As ‘t + 1’ will generate an error if ‘t == alphabet.length - 1’
    // we do not go over that—instead we cover that after the loop
    for(int t = 0; t < alphabet.length - 1; t ++)
        if(c == alphabet[t])
        {
            input[i] = alphabet[t + 1];

            break;
        }

    // If alphabet ‘t’ was equal to ‘alphabet.length - 1’ or the symbol
    // was not located by the alphabet—say input contained a number
    if(c == input[i])
        input[i] = alphabet[0];
}

// Print out result
System.out.println("Input is: " + new String(input));

// Close scanner
scanner.close();
//扫描用户输入的扫描仪
//包含整个字母表的“char”数组
扫描仪=新的扫描仪(System.in);
char[]alphabet=“abcdefghijklmnopqrstuvxyz”。toCharArray();
char[]输入=scanner.nextLine().tocharray();
//检查输入中的字符
for(int i=0;i
这只适用于信件。但是检查大写字母也不会比创建另一个包含大写字母的
char
s字母数组更远

如果您希望实现更具可读性,我可以建议您将“检查字母表”放在单独的方法中吗

此外 实现相当简单,但我相信您可以在此基础上进行构建

导言 我们将像往常一样使用
扫描仪
使用
nextLine
扫描用户输入。检索用户输入后,我们将其转换为
char
s数组,并使用字母表数组中包含的
char
检查每个
char

如果输入的
字符串
包含一个符号将被替换为
a
的数字-如果您不希望出现这种行为,我相信您可以自己找到如何更改的方法

实施 以下是我们将要做的:

// Scanner to scan for user input
// Array of ‘char’s containing entire alphabet
Scanner scanner = new Scanner(System.in);
char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();
char[] input = scanner.nextLine().toCharArray();

// Go over chars inside input
for(int i = 0; i < input.length; i ++)
{
    char c = input[i];

    // Go over alphabet in search for corresponding char
    // As ‘t + 1’ will generate an error if ‘t == alphabet.length - 1’
    // we do not go over that—instead we cover that after the loop
    for(int t = 0; t < alphabet.length - 1; t ++)
        if(c == alphabet[t])
        {
            input[i] = alphabet[t + 1];

            break;
        }

    // If alphabet ‘t’ was equal to ‘alphabet.length - 1’ or the symbol
    // was not located by the alphabet—say input contained a number
    if(c == input[i])
        input[i] = alphabet[0];
}

// Print out result
System.out.println("Input is: " + new String(input));

// Close scanner
scanner.close();
//扫描用户输入的扫描仪
//包含整个字母表的“char”数组
扫描仪=新的扫描仪(System.in);
char[]alphabet=“abcdefghijklmnopqrstuvxyz”。toCharArray();
char[]输入=scanner.nextLine().tocharray();
//检查输入中的字符
for(int i=0;i