如何通过逐个字符的用户输入(使用扫描程序库)筛选我的porgram?

时间:2017-01-20 13:42:09

标签: java encoding java.util.scanner decoding

我正在为一个高中课程编写一个小程序,并希望收集用户的输入(EX:" Hello"),将其划分为单独的字符("你好&# 34; - >" h"," e"," l"," l"," o" ),然后将字符移动到字母表中的一个位置(" Hello" - >" Ifmmp")。有没有一种简单的方法可以使用java?

5 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您需要将字符串转换为字符数组,然后循环遍历它并递增每个字符。看看下面的帖子。 String to char array Java

答案 2 :(得分:0)

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

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

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);

答案 3 :(得分:0)

您甚至不需要扫描仪来完成字符串。但是,您可以使用扫描仪来获取用户输入。然后你只需通过char查看String char并操纵它们。但要小心:在这个例子中,当char是“z”或“Z”时,它将被改成错误的char。所以你必须适当地处理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);

打印出来:

bcd

答案 4 :(得分:0)

简介

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

如果结果输入String包含一个数字 - 该符号将替换为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();

这仅适用于lower case个字母。但是检查大写字母也不会比创建包含大写字母的char的另一个字母数组更远。

如果您希望实现稍微更具可读性,我建议您在单独的方法中使用'go over alphabet'吗?

而且

实现相当简单,但我相信你可以在它之上构建!