小编典典

检查数组中的值

java

我需要检查数组以查看用户输入是否已经存在,并显示一条有关是否存在的消息。第一部分工作正常,但是我尝试创建一种用于单词检查的方法,我不确定自己是否走对了,干杯。

 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");
        }

    }

}

阅读 239

收藏
2020-11-30

共1个答案

小编典典

对。您显然已经经历了一个糟糕的思考过程,所以让我们清理一下状况,重新思考一下。

  • 第一步:您需要一些用户输入
  • 第二步:将其与所有先前的用户输入进行比较,以查看是否存在。
    • 如果存在,则返回一条消息,指示已输入值。
    • 否则忽略输入并继续执行
  • 重复步骤一。

解决方案

因此,让我们回顾一下您所拥有的,以及如何更改它。

public static void main(String[] args)

如果我是你,我将避免直接从此处调用方法。如果这样做,则每个方法都必须是静态的,这对于类功能的作用域是无意义的调整。在main方法内部创建类的新实例,然后将此代码移到类的构造函数中。这将消除使每个方法静态化的需要。

Scanner scan = new Scanner(System.in);
String array[] = new String[10];

好的,因此您已经创建了一个扫描器对象,该对象从System.in流中获取输入。从键盘上输入时,这是合理的做法。您还创建了一个包含每个项目的数组。如果只希望用户能够输入10个值,则可以。就个人而言,我将使用ArrayList,因为这意味着您可以根据用户需要输入任意数量的用户输入。

其次,您需要一个函数将输入与所有其他输入进行比较。您目前所拥有的显然不起作用,因此让我们再做一次。

您将需要一些输入和userInput,以将其与进行比较allInputs

allInputs 需要从程序的任何位置进行访问,因此将其放入字段而不是局部变量可能是明智的。

然后,因为您要将userInput与所有值进行比较,所以需要一个foreach循环:

for(String s : allInputs)
{
    if(s.equals(userInput))
    {
       // Output message code.
    }
}

现在,诀窍是将其适合与此程序一起使用的循环内。这取决于您,因为我们不是代码编写服务。希望我的回答能使您走上正确的轨道:)

2020-11-30