使用数组显示用户输入的值有

时间:2013-12-18 10:43:56

标签: java eclipse

我有一项任务,我一整天都在努力,我完成了它,并且它有效,但不是我的老师想要它的方式,我已经绞尽脑汁几个小时没有运气

这是作业问题

“编写一个程序,输入5个,每个程序在10到100之间(包括10和100),正如我读取的每个数字,只有当它不是已经读过的重复数字时才显示它,提供”最坏情况“,其中所有五个数字不同,使用尽可能小的数组来解决这个问题。在用户输入每个新值后显示输入的一整套唯一值。“

这是我写的代码

public static void main(String[] args) {
     Scanner input = new Scanner(System.in);
        int sid[] = new int[5];

        int count = 0; 
        int x = 0;
        int num = 0;

        while (x < sid.length) 
            {
            System.out.println("Enter number: ");
            num = input.nextInt();

            if ((num >= 10) && (num <= 100)) {
                boolean digit = false;
                x++;

                for (int i = 0; i < sid.length; i++) 
                 {   if (sid[i] == num)     
                     digit = true;
                 }  

            if (!digit) {

                    sid[count] = num;

                    count++;

            } 

                else

                System.out.printf("the number was entered before \n");

                      }

              else
               System.out.println("number must be between 10 and 100");


            for (int i =0;  i < x; i++) {
                System.out.print(sid[i] +" ");

            }

            System.out.println();  
        } 

        } 
    } 

我的问题是输出输出就像这样

    {
        Enter number: 
            11
            11 
            Enter number: 
            21
            11 21 
            Enter number: 
            34
            11 21 34 
            Enter number: 
            11
            the number was entered before
            11 21 34 0 
            Enter number: 
            44
            11 21 34 44 0

}

但是我的老师希望输出看起来像这样,最后没有0,并且没有将数据sid的值从sid [5]更改为sid [4]

    {
        Enter number: 
            11
            11 
            Enter number: 
            21
            11 21 
            Enter number: 
            34
            11 21 34 
            Enter number: 
            11
            the number was entered before
            11 21 34  
            Enter number: 
            44
            11 21 34 44 

}

我一直在努力工作几个小时而没有任何运气。

感谢任何帮助。

谢谢。

欢呼声。

3 个答案:

答案 0 :(得分:1)

您只需在输出循环中添加if条件。

            for (int i =0;  i < x; i++) {
                if(sid[i]!=0)
                    System.out.print(sid[i] +" ");
            }

答案 1 :(得分:0)

打印答案时检查“0”并忽略它们。或者当你发现当前的数字是重复时减少x。

 for (int i = 0; i < sid.length; i++) 
             {   if (sid[i] == num)     
                 digit = true;
                 x--;
             }  

 for (int i =0;  i < x; i++) {
            if(sid[i]!=0)
                System.out.print(sid[i] +" ");
        }

如果没有必要使用数组,您可以使用Sets。那会更容易。

答案 2 :(得分:0)

将x增量(x++)放入if (!digit)

if (!digit) {

    sid[count] = num;

    count++;

    x++;
}

从下面的if语句中删除x增量(x++

if ((num >= 10) && (num <= 100)) {
    boolean digit = false;
    x++;
}

这样,消除了零,无论尝试了多少次重复,程序仍然可以运行。