Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误的数组输入_Java_Arrays_String_Input - Fatal编程技术网

Java 错误的数组输入

Java 错误的数组输入,java,arrays,string,input,Java,Arrays,String,Input,因此,我想将用户输入引入一个变量,然后将其添加到数组中,但相反,该字符直接进入数组并跳过3行代码。 这里的代码 import java.util.*; public class Hangman{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("Please enter your word and press enter: ");

因此,我想将用户输入引入一个变量,然后将其添加到数组中,但相反,该字符直接进入数组并跳过3行代码。 这里的代码

import java.util.*;
public class Hangman{

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.println("Please enter your word and press enter: ");
    String word = sc.nextLine();
    System.out.println("Please enter a relevant category and press enter: ");
    String category = sc.nextLine();
    word.toUpperCase();
    char charArray[] = new char[word.length()];


    for(int i = 0; i<=word.length(); i++){
        System.out.println("Category: " + category);
        System.out.println("Letters Guessed: " + Arrays.toString(charArray));
        System.out.println("Your guess: ");
        char guess = sc.nextLine().charAt(0);
        compare(guess, word);
        charArray[i] = guess;


    }
}
public static boolean compare(char guess, String word){
    for(int i = 0; i<word.length(); i++){
        if(guess == word.charAt(i)){
            return true;
        }
    }
    return true;
}
}

有人能给你一些提示吗?你的比较方法无效:

public static boolean compare(char guess, String word){
    for(int i = 0; i<word.length(); i++){
        if(guess != word.charAt(i)){
            return false;
        }
    }
    return true;
}
公共静态布尔比较(字符猜测、字符串字){

对于(int i=0;i首先,您应该按照其他人的建议修改
compare()
方法,以便它不总是返回true

第二,您应该在
main()
方法中使用返回值。如果比较为真与假,您不清楚要做什么,因此一般来说

if (compare(guess, word)) { 
    /* Do something */ 
} else { 
   /* Do something else here */
}

这篇文章对预期产出和实际产出有一些含糊不清的地方;以下几点必须考虑

  • 字符串是不可变的,但您使用的是word.toUpperCase(),而没有赋值。例如:

    word=word.toUpperCase()

  • 您使用的是比较方法,但不是使用其决策方式

    如果(比较(猜测,单词)){

    }


  • 注:
    word.toUpperCase()
    -字符串是不可变的对象,您应该将结果分配回字符串。而且您的
    比较
    方法没有任何意义,它总是返回
    。请添加一些关于这应该做什么的详细信息。您的代码中有几个问题,但很难判断哪个是真正的错误,哪个是真正的错误ch是你以后要实现的东西。这应该是类似于刽子手的东西吗?类别是什么?
       //do something