将字符串拆分为字符并与Java中的用户输入匹配

时间:2015-10-29 17:15:40

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

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

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但不能匹配时它会这样做。

3 个答案:

答案 0 :(得分:1)

只需在第二个wCharLetter = wChar[i];循环中指定for,然后抛弃上一个循环:

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

答案 1 :(得分:0)

检查出来:

SET (BUILD_APPS OFF CACHE BOOL "" FORCE)                                                             
MESSAGE ("-- BUILD_APPS is set to " ${BUILD_APPS})

希望这会有所帮助。

答案 2 :(得分:0)

基于@Mena描述。我收集了所有字符并存储在Arraylist中,然后使用array.contains方法来匹配用户输入的值。

以下是代码:

import java.util.Scanner;
import java.util.ArrayList;

public class test {


public static void main(String[] args) {

    // Declaring variables
    String[] wordsList= {"java"};
    char inputValue = 0;


    Scanner input = new Scanner (System.in);

    ArrayList<Character> charsList = new ArrayList<Character>();
    for (int i = 0; i < wordsList[0].length(); i++){
        charsList.add(wordsList[0].charAt(i));
    }

    for (int i = 0; i < wordsList[0].length(); i++) {
        inputValue = input.next().charAt(0);
        if (charsList.contains(inputValue)) {
            System.out.println("Matched!");  
         }
        else {
            System.out.println("Not Matched!");
        }   
    }
    input.close();
}}