【问题标题】:Splitting String into characters and matching with users input in Java将字符串拆分为字符并与 Java 中的用户输入匹配
【发布时间】:2015-10-29 17:15:39
【问题描述】:

我正在开发一个非常简单的程序来从单词中拆分字符并要求用户输入字符。如果用户输入的字符与字符数组匹配,则显示“YES”,否则显示“NO”。我使用 .ToCharArray 方法和循环将每个字符从单词中拆分出来并将其分配给字符数组。然后我使用带有 IF 语句的 for 循环来检查条件并显示结果。但它只匹配字符数组中的一个字符而忽略其他字符。

public class test {


public static void main(String[] args) {

    // Declaring variables
    String[] wordsList= {"java"};
    char[] wChar = wordsList[0].toCharArray();
    char wCharLetter = 0;
    char inputChar;

    Scanner input = new Scanner (System.in);

    for (int i = 0; i < wordsList[0].length(); i++){
        wCharLetter = wChar[i];
    }

    for (int i = 0; i < wordsList[0].length(); i++){
        inputChar = input.next().charAt(0);
        if (inputChar==wCharLetter){
            System.out.println("YES");
        }
        else{
            System.out.println("NO");
        }
    }       

} }

据我了解;从技术上讲,wCharLetter 变量应该存储所有字符,当我打印 wCharLetter 但在匹配时不起作用。

【问题讨论】:

  • wCharLetter 变量只存储最后一个字符,因为每次赋值都会覆盖之前的值。
  • 你认为一个字母和多个字母有什么区别?

标签: java arrays string if-statement for-loop


【解决方案1】:

只需在第二个 for 循环中分配 wCharLetter = wChar[i]; 并放弃前一个循环:

for (int i = 0; i < wordsList[0].length(); i++) {
    wCharLetter = wChar[i];
    inputChar = input.next().charAt(0);
    if (inputChar == wCharLetter) {
        System.out.println("YES");
    } else {
        System.out.println("NO");
    }
}

另外,完成后不要忘记close 你的Scanner

// ...
input.close();

可能的输入/输出:

j
YES
a
YES
v
YES
a
YES

...或...

l
NO
a
YES
v
YES
a
YES

【讨论】:

  • 当以单词字符的相同顺序输入字符时有效。 j a v a (有效),但如果输入: a v j a (则无效)。感谢您的帮助
  • @MaihanNijat 是的,这很正常。如果您希望它不管顺序如何都能正常工作,您需要完全放弃该代码并收集一个列表中的字符,然后在另一个列表中输入,然后比较两个列表。当用户应该停止添加字符时,您还需要一个中断案例。
【解决方案2】:

看看这个:

String wordArray="Java";

    Scanner input = new Scanner (System.in);



        for (int i=0;i<=wordArray.length();i++)
        {
            if(wordArray.charAt(i)==input.next().charAt(0))
            {
                System.out.println("YES");
                break;
            }
            else
            {
                System.out.println("NO");
                break;
            }
        }

    input.close();

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 2020-06-21
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多