我需要检查数组以查看用户输入是否已经存在,并显示一条有关是否存在的消息。第一部分工作正常,但是我尝试创建一种用于单词检查的方法,我不确定自己是否走对了,干杯。
import java.util.Scanner; public class InputLoop { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String array[] = new String[10]; int num = array.length, i = 0; System.out.println("Enter a word"); for (i = 0; i < num; i++) { while (scan.hasNextInt()) // while non-integers are present... { scan.next(); // ...read and discard input, then prompt again System.out.println("Bad input. Enter a word"); } array[i] = scan.next(); WordCheck(); } } public void WordCheck(String[] i) { Scanner scan = new Scanner(System.in); System.out.println("Enter another word"); if (scan.next().equals(array[i])) { System.out.println("The word has been found"); } else { System.out.println("The word has not been found"); } } }
对。您显然已经经历了一个糟糕的思考过程,所以让我们清理一下状况,重新思考一下。
因此,让我们回顾一下您所拥有的,以及如何更改它。
public static void main(String[] args)
如果我是你,我将避免直接从此处调用方法。如果这样做,则每个方法都必须是静态的,这对于类功能的作用域是无意义的调整。在main方法内部创建类的新实例,然后将此代码移到类的构造函数中。这将消除使每个方法静态化的需要。
Scanner scan = new Scanner(System.in); String array[] = new String[10];
好的,因此您已经创建了一个扫描器对象,该对象从System.in流中获取输入。从键盘上输入时,这是合理的做法。您还创建了一个包含每个项目的数组。如果只希望用户能够输入10个值,则可以。就个人而言,我将使用ArrayList,因为这意味着您可以根据用户需要输入任意数量的用户输入。
System.in
其次,您需要一个函数将输入与所有其他输入进行比较。您目前所拥有的显然不起作用,因此让我们再做一次。
您将需要一些输入和userInput,以将其与进行比较allInputs。
userInput
allInputs
allInputs 需要从程序的任何位置进行访问,因此将其放入字段而不是局部变量可能是明智的。
然后,因为您要将userInput与所有值进行比较,所以需要一个foreach循环:
for(String s : allInputs) { if(s.equals(userInput)) { // Output message code. } }
现在,诀窍是将其适合与此程序一起使用的循环内。这取决于您,因为我们不是代码编写服务。希望我的回答能使您走上正确的轨道:)