我需要检查数组以查看用户输入是否已经存在,并显示一条消息来指示它是否存在。第一部分工作正常,但我尝试创建了一个单词check的方法,我不确定我是否走对了路,干杯。
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");
}
}
}
4条答案
按热度按时间gorkyyrv1#
好吧。你显然陷入了一个糟糕的思考过程,所以让我们清理一下记录,重新考虑一下。
解决方案
那么,让我们回顾一下您已经拥有了什么,以及您需要如何更改它。
public static void main(String[] args)
如果我是你,我会避免直接从这里调用方法。如果你这样做,每个方法都需要是静态的,这对你的类的功能范围来说是一个毫无意义的调整。在main方法内部创建一个你的类的新示例,并将此代码移到类的构造函数中。这将消除使每个方法都是静态的需要。
好了,你已经创建了一个scanner对象,它从
System.in
流中获取输入。当从键盘获取输入时,这是一个合理的做法。你还创建了一个数组来包含每一项。如果你只想让用户能够键入10个值,那么这是可以的。就个人而言,我会使用ArrayList,因为这意味着您可以根据用户的需要接收任意多的用户输入。第二,你需要一个函数来比较输入和所有其他输入,你现在所拥有的显然不起作用,所以让我们再试一次。
您将需要一些输入
userInput
和一个集合来将其与allInputs
进行比较。allInputs
需要可以从程序中的任何一点访问,因此将其设置为字段而不是局部变量可能是明智的。然后,因为要将userInput与所有值进行比较,所以需要一个foreach循环:
现在的诀窍是把它放进一个循环里,这个循环和这个程序一起工作,这取决于你。
nbysray52#
一个简单的解决方案是使用
Set
:使用
add()
方法添加单词,并检查是否已使用contains(word)
方法添加单词。如果你必须使用
Arrays
,你可以保持数组排序,并做一个二进制搜索:busg9geu3#
你必须遍历整个数组,检查scan.next()是否等于其中的任何一个,如果是,返回true,如下所示:
这假设您调用
WordCheck()
,并将数组传递给它-此方法也必须是静态的,以便您从main()
方法调用它。nlejzf6q4#
可以使用arraylist.contains(“name”)方法检查是否存在重复的用户条目。