当前位置: 首页 > 面试题库 >

检查数组中的值

夏英发
2023-03-14
问题内容

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

 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,因为这意味着您可以根据用户需要输入任意数量的用户输入。

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

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

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

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

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

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



 类似资料:
  • @PeterLawrey我稍微调整了代码如下,因为我只需要洗牌,这是一个享受,我会弹出卡片的堆栈来处理 感谢彼得和所有其他贡献者。M.

  • 这里有一个映射,我正在尝试检查数组中的值,如果它找到,则返回;如果它没有找到,则返回预期输出。根据我对和索引的了解,如果(x[index]===y[j]){condition=true}应该进入

  • 在PHP中,检查数组是否为递归数组的最佳方法是什么? 给定以下代码: 从PHP手册: print\u r()在到达数组的第三个元素时将显示递归。 似乎没有其他方法可以扫描数组中的递归引用,因此如果需要检查它们,则必须使用print\u r()及其第二个参数来捕获输出并查找单词RECURSION。 还有更优雅的检查方式吗? 附:这就是我如何使用regex和print\u r()检查和获取递归数组键的

  • 我想做的每件事都成功了,现在是最后一部分,我需要检查某个id的学生是否有某种疫苗,结果应该是真的或假的。我知道我必须使用ListofFos。contains():'但我不知道如何使用它,也不知道在哪里使用它。

  • 我一直在做一个即时聊天程序,并希望使用户可以“耳语”或私人消息彼此。我实现的方式是用户输入: /W[用户名][消息] 然后将其发送给服务器,服务器将其发送给所有用户。然后用户必须检查它是否发送给他们,这就是方法: 每次在测试时发送a/W时,它总是给出ArrayIndexOutOfBoundsException。我也在发送中修改消息。方法如下: 我还为用户的实际代码添加了一大堆更多的选项,我创建了/

  • 问题内容: 我正在尝试检查2D数组中每个元素的相邻值,但是当我到达数组的边或角落时,得到了IndexOutOfBoundsException。例如,如果我的数组是: | 2 | 4 | 2 | 7 | 8 | | 8 | 1 | 0 | 5 | 6 | | 0 | 3 | 1 | 5 | 2 | | 1 | 9 | 7 | 2 | 0 | 我知道8的所有邻居都是7,5和6,但是我的陈述并没有正确检