Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用数组,如何存储和显示唯一的数字?_Java_Arrays_Unique - Fatal编程技术网

Java 使用数组,如何存储和显示唯一的数字?

Java 使用数组,如何存储和显示唯一的数字?,java,arrays,unique,Java,Arrays,Unique,您好,堆栈溢出,我现在正在学习编程类中的数组,它现在对我来说变得非常混乱,我似乎无法为它编写正确的代码。我已经成功地完成了大部分工作,但我似乎无法在第25行获得if语句的正确代码,并且在第12行得到了一个找不到的符号。程序的输出应在用户输入后显示数字,并继续一个小列表,让用户知道他们是否已经输入了相同的数字。输出将类似于以下内容: Enter number: 11 11 Enter number: 85 11 85 Enter number: 26 11 85 26 Enter number:

您好,堆栈溢出,我现在正在学习编程类中的数组,它现在对我来说变得非常混乱,我似乎无法为它编写正确的代码。我已经成功地完成了大部分工作,但我似乎无法在第25行获得if语句的正确代码,并且在第12行得到了一个找不到的符号。程序的输出应在用户输入后显示数字,并继续一个小列表,让用户知道他们是否已经输入了相同的数字。输出将类似于以下内容:

Enter number: 11
11
Enter number: 85
11 85
Enter number: 26
11 85 26
Enter number: 11
11 has already been entered
11 85 26
以下是我迄今为止的代码:

import java.util.Scanner;

public class Unique
{
public void getNumbers()
{
    Scanner input = new Scanner(System.in);
    int[] numbers = new int [5];
    int count = 0; // unique numbers read
    int entered = 0; // entered numbers

    while( entered < numbers.length)
    {
        System.out.print("Enter number: ");
        int number = input.nextInt();

        if (number >= 10 && number <= 100)
        {
            boolean containsNumber = false;
            entered++;

            for (int a = 0; a < array.length; a++)
            numbers[a]=number;                  

            if (!containsNumber)
            {
                count++;
            }
            else
                System.out.printf("%d has already been entered\n", number);
        }
        else 
            System.out.println("number must be between 10 and 100");
            System.out.printf("%d\n",number);
            for(int value:numbers)
            System.out.printf("   %d\n", value);
    }
  }
}
import java.util.Scanner;
公共类唯一
{
公共编号()
{
扫描仪输入=新扫描仪(System.in);
int[]数字=新的int[5];
int count=0;//读取唯一数字
int entered=0;//输入的数字
while(输入=10&&number你很接近,非常接近。你的for循环几乎完成了,你只需要在它里面放一个if。由此:

for (int a = 0; a < array.length; a++)
    numbers[a]=number;
for(int a=0;a
对这样的事情:

for (int a = 0; a < array.length; a++)
{
    if (array[a] == number)
    {
        containsNumber = true;
        break; //This exits the for loop, so you don't continue unneedlessly
    }
}
for(int a=0;a
然后,增加计数的if语句将起作用,您只需更改该语句即可将数字添加到数组中

for (int a = 0; a < array.length; a++)
numbers[a]=number;
若还并没有输入用户的输入,那个么你们应该附加用户的输入。然后,你们应该这样做

if (!containsNumber)
{
    numbers[count] = number;
    count++;
}
另外,
输入的
变量是不需要的,
数字
的大小是
计数
,不是吗

while (count < numbers.length)
{
    ...
虽然
number.length
始终为5,但数字的实际内容大小是
count
。因此,我们应该这样做

for (int i = 0; i < count; i++)
{
    System.out.printf("   %d\n", numbers[i]);
}
因此,代码应该是

import java.util.Scanner;

class Unique
{
    public void getNumbers()
    {
        Scanner input = new Scanner(System.in);
        int[] numbers = new int [5];
        int count = 0; // unique numbers read

        while (count < numbers.length)
        {
            System.out.print("Enter number: ");
            int number = input.nextInt();

            if (number >= 10 && number <= 100)
            {
                boolean containsNumber = false;

                for (int a = 0; a < numbers.length; a++)
                {
                    if (numbers[a] == number)
                    {
                        containsNumber = true;
                        break;
                    }
                }                 

                if (!containsNumber)
                {
                    numbers[count] = number;
                    count++;

                    System.out.printf("%d\n",number);
                }
                else
                {
                    System.out.printf("%d has already been entered\n", number);
                }
            }
            else 
            {
                System.out.println("number must be between 10 and 100");
            }

            for (int i = 0; i < count; i++)
            {
                System.out.printf("   %d\n", numbers[i]);
            }
        }
    }
}
import java.util.Scanner;
类唯一
{
公共编号()
{
扫描仪输入=新扫描仪(System.in);
int[]数字=新的int[5];
int count=0;//读取唯一数字
while(计数<数字.长度)
{
系统输出打印(“输入编号:”);
int number=input.nextInt();

如果(number>=10&&number您得到的输出是什么?您应该将其添加到您的问题中,以便我们可以比较预期输出与实际输出。我看到的第一件事是
containsNumber
将始终为false,因为您的代码中没有任何位置可以更改它。第二件事是,当用户输入一个数字时,您将数组中的每个位置都设置为该数字数字。我看到的最后一件事是,你输入了
,但我从来没有看到你生成变量
numbers
。我想你的意思是
数组。length
。我看到的第一件事是你的for循环使数组中的每个数字都是相同的。很幸运的是,我的代码没有像它显示的那样编译,因为我在我的内部停留了一段时间d if语句。我也可以告诉你们没有人读过我在开头所说的内容。我是java新手。我知道我的代码还没有完成,也不会给我想要的输出。我只是请求帮助,而不是因为我已经知道的错误而被批评。为了帮助你们,我必须指出错误。我并不想批评你们。如果你们知道的话什么是错误的,你可以尝试去做那些事情。这就是我正在寻找的帮助。我知道我很接近,我只是不知道如何实现代码,因为我上周学习了数组。这就是为什么我遇到这个问题。我很抱歉,如果我的代码是混乱的,这就是为什么我在学习java的中间。谢谢。非常感谢您的帮助。当我尝试实现user3189142建议的功能时,我的输出出现了问题,并尝试自己修复。现在我需要保存此功能,以便在再次出现相同错误时可以依靠它。
for (int i = 0; i < count; i++)
{
    System.out.printf("   %d\n", numbers[i]);
}
if (!containsNumber)
{
    numbers[count] = number;
    count++;
    // here
    System.out.printf("%d\n",number);
}
import java.util.Scanner;

class Unique
{
    public void getNumbers()
    {
        Scanner input = new Scanner(System.in);
        int[] numbers = new int [5];
        int count = 0; // unique numbers read

        while (count < numbers.length)
        {
            System.out.print("Enter number: ");
            int number = input.nextInt();

            if (number >= 10 && number <= 100)
            {
                boolean containsNumber = false;

                for (int a = 0; a < numbers.length; a++)
                {
                    if (numbers[a] == number)
                    {
                        containsNumber = true;
                        break;
                    }
                }                 

                if (!containsNumber)
                {
                    numbers[count] = number;
                    count++;

                    System.out.printf("%d\n",number);
                }
                else
                {
                    System.out.printf("%d has already been entered\n", number);
                }
            }
            else 
            {
                System.out.println("number must be between 10 and 100");
            }

            for (int i = 0; i < count; i++)
            {
                System.out.printf("   %d\n", numbers[i]);
            }
        }
    }
}