为了账号安全,请及时绑定邮箱和手机立即绑定

你如何检查输入的数组值是否相同?

你如何检查输入的数组值是否相同?

HUH函数 2021-12-01 19:36:02
我的程序应该确保用户输入的每个值都在 10-100 之间。然后将该值存储在数组中。那部分工作正常。另一个条件是用户输入的值必须与所有其他数组不同。即...array[0]=20 所以所有其他数组不能再设置为 20。我一直在尝试解决这个问题,但我只是不知道该去哪里。我在 while(userInput < 10 || userInput > 100) 之后尝试设置语句以检查任何重复并且有效。问题是用户可以输入小于 10 和大于 100 的值。任何帮助将不胜感激!public static void main(String[] args) {    //Creating scanner object    Scanner input = new Scanner(System.in);    int[] array = new int[5];    int counter = 0;    while(counter < 5)    {        for(int x = 0; x < array.length; x++)        {            System.out.print("Enter number between 10 & 100: ");            int userInput = input.nextInt();            while(userInput < 10 || userInput > 100)            {                                System.out.print("Please enter number between 10 & 100: ");                userInput = input.nextInt();            }            array[x] = userInput;            System.out.println(array[x]);            counter++;        }    }    System.out.println();    System.out.println("The value of Array[0]: " + array[0]);    System.out.println("The value of Array[1]: " + array[1]);    System.out.println("The value of Array[2]: " + array[2]);    System.out.println("The value of Array[3]: " + array[3]);    System.out.println("The value of Array[4]: " + array[4]);        }}
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您应该摆脱 for 和 second while 循环,并检查输入的值是否在所需范围内。

如果是,则验证重复项,将其存储在数组中并增加计数器。如果不是,则显示错误的输入消息。

无论哪种方式,它都会继续请求有效输入,直到计数器达到 5。

我希望它有帮助!


查看完整回答
反对 回复 2021-12-01
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

首先,摆脱嵌套循环。他们是多余的。让我们看看您的问题的规格。您的输入需要满足 3 个要求:

  • 大于等于10

  • 小于或等于 100

  • 成为数组内的唯一元素

前两个条件很简单,可以检查。对于最终条件,您需要搜索数组中的值并查看是否有与您的输入匹配的值。如果是,则输入无效。解决这个问题的一个简单方法是检查数组的每个成员,如果发现重复就停止。有更好、更有效的方法来做到这一点。不要害怕搜索互联网来学习搜索算法。以下是您问题的简单解决方案。它远非理想或高效,但对于初学者来说很容易理解。

import java.util.Scanner;


public class Main {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        int[] array = new int[5];

        int counter = 0;

        int userInput;


        while(counter < 5) {

            System.out.print("Enter a number between 10 & 100: ");

            userInput = in.nextInt();

            if( (userInput >= 10 && userInput <= 100) && !searchDuplicates(array, userInput) ) {

                array[counter] = userInput;

                counter++;

            } else {

                System.out.println("Invalid value entered");

            }

       }

       for(int i = 0; i < array.length; i++)

           System.out.println("Value " + (i + 1)  + ": " + array[i]);

    }


    private static boolean searchDuplicates(int[] array, int input) {

        for(int i = 0; i < array.length; i++)

            if(array[i] == input)

                return true;

        return false;

    }

}


查看完整回答
反对 回复 2021-12-01
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

  1. counter当 varx为你做同样的事情时不要使用变量。

  2. 当两个循环的限制条件需要进行检查,不要使用嵌套循环一起在每个迭代。尽可能将这些循环合并为一个循环。


查看完整回答
反对 回复 2021-12-01
  • 3 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信