'Why is for loop only out putting first and last entries

This is what is being asked to do... Write an application that inputs five numbers, each between 10 and 100, inclusive. As each number is read, display it only if it’s not a duplicate of a number already read. Provide for the “worst case,” in which all five numbers are different. Use the smallest possible array to solve this problem. Display the complete set of unique values input after the user enters each new value.

This is the code I have. It compiles and runs, but only outputs the first and last entries of the unique list. Any input greatly appreciated! Thanks in advance.

 import java.util.Scanner;
 public class DuplicateElimination{



    // sets helper functions
    public static boolean isIn(int x, int[]y)
    {
        boolean isIn = false;// sets boolean to false
        for (int i=0; i<y.length; i++)// sets for loop to run for length of array
        {
            if(y[i]==x)
            {
                isIn = true;
            }
        }
        return isIn;
    }
    public static int[] append(int x, int[] y)// going to change what has already been set. creates integer array
    {

        int len = y.length +1;// sets length
        int[] a = new int[len];// initializes new array
        for (int i=0; i<y.length; i++); // goes through length of y 
        {
            int i=0;
            a[i] = y[i];
        }
        a[y.length] =x;
        return a;
    }

        public static void main(String[] args)// sets main
        {


            Scanner input = new Scanner (System.in);// sets scanner to read input info
            int[]uniqueList = new int[1]; 
            uniqueList[0] = 0;// sets unique list to 0
            System.out.print("Enter an integer between 10 and 100:");// prompts input from user
            int entered = input.nextInt();// inputs value from user
            System.out.printf("This is the first time %d has been entered\n", entered);// adds first entered # to unique list
            uniqueList[0] = entered;// adds entered value to unique list

            for (int i=0; i<4; i++)// sets loop to find unique values
            {

            System.out.print("Enter an integer between 10 and 100:");// prompts use
            entered = input.nextInt();// inputs value
            if(isIn (entered, uniqueList) == false)// calls is in function
            {
                System.out.printf("This is the first time %d has been entered\n", entered);
                uniqueList = append(entered, uniqueList);// puts entered values in unique values on list
            }
        }

        System.out.println("The complete list of unique values entered is:");
        for(int i =0; i< uniqueList.length; i++)// runs through list to check for unique #s
        {
            System.out.printf("Unique value %d: is %d\n", i + 1, uniqueList[i]);// outputs list
        }


    }// ends main
}// ends class


Solution 1:[1]

in the append part change your for loop to:

   for (int i=0;i<y.length;i++)
        a[i]=y[i];

it didn't work because of for (int i=0; i<y.length; i++); the semi-colon is hijacking your loop as for why the result is as it is, your

    {
        int i=0;
        a[i] = y[i];
    }   
 a[y.length] =x;
    return a;

part is just copying the first element of y into a and then copying the new element in the last cel of a

Solution 2:[2]

import java.util.*;
class Example{
    public static void main(String args[]){
        int[] xr = new int[5];
        Scanner input = new Scanner (System.in);
        System.out.println("Input five different integers between 10 and 100 below");
    L1: for (int i = 0; i < xr.length; i++){
            System.out.print("\tInput number "+(i+1)+" : ");
            xr[i] = input.nextInt();
            for(;xr[i]<=10 || xr[i]>=100;){
                i--;
                System.out.println("\t Error : You entered number is not between 10 and 100.");
                continue L1;
                }
            for (int x = 0; x < i; x++){
                if(xr[x] == xr[i]){
                    i--;
                    System.out.println("\tError : You cannot use duplicate numbers.");
                    continue L1;
                }  
            }
        }
        System.out.println(Arrays.toString(xr));
        }
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Peter Csala