2017-08-31 22 views
1
Scanner sc=new Scanner(System.in); 
int i=0; 
int nr = sc.nextInt(); 

int[] arr=new int[5]; 
while (i<arr.length || arr[i] < 11){ 
    System.out.println("Enter "+i+" index of array: "); 
    int j = 0; 
    if (arr[i]==arr[j]) { 
     arr[i]=sc.nextInt(); 
     i++; 
    } 
} 
System.out.println(Arrays.toString(arr)); 

如何在數組中插入只有不重複兩次且值不應該傳遞的值,否則請再次詢問用戶。請幫助,卡住!Java填充非重複記錄的數組

+0

你應該使用搜索技術,以確保價值 代碼並沒有出現在數組中。另一部分應該像'if(arr [i]> 11),然後跳過'。 –

+0

使用數組,您有['Arrays.binarySearch'](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(int [],%20int)) 。對於唯一性,你也可以使用'Map'。但我不相信這會需要5個項目...你可以迭代自己每次;) – AxelH

+0

任何人都可以幫助我一個有效的代碼謝謝你! – User2333

回答

1
public static void main(String... args) { 
    Integer[] arr = new Integer[5]; 
    Scanner sc = new Scanner(System.in); 
    for (int j = 0; j < arr.length;) { 
     System.out.println("Enter a number less than 11."); 
     Integer i = sc.nextInt(); 
     if (i < 11 && !Arrays.stream(arr).anyMatch(a -> a == i)) { 
      arr[j] = i; 
      j++; 
     } 
    } 
    System.out.println("type 1 for ascending and 2 for descending order"); 
    int choice = sc.nextInt(); 
    if (choice == 1) 
     Arrays.sort(arr); 
    else if (choice == 2) 
     Arrays.sort(arr, Collections.reverseOrder()); 
    System.out.println(Arrays.toString(arr)); 
} 

此代碼的工作,但對於現有元素的搜索是最有可能的5種元素的矯枉過正,但有用的,如果它擴展了。還要注意,這段代碼在Java 7中不起作用。如果您需要對代碼的功能做一些說明,那就問一下。

編輯:更新,以提供某種選擇

+0

我已經標記了你的答案,但讓我問最後一個問題,我該如何排序這個asc,desc?或者你能給我一些指示嗎? – User2333

+0

你的意思是輸出或總計? – XtremeBaumer

+0

輸出檢查後,它已經刪除重複項後詢問用戶如何對其進行排序 – User2333

-1

以下是代碼:您可以從3更改數組的大小並嘗試使用代碼。

如果您有任何疑問,歡迎您提問。

public class test { 
    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     int[] arr = new int[3]; 
     int counter = 0; 
     while (true) { 
      System.out.println("Enter a number less than 11."); 
      int i = sc.nextInt(); 
      if (i < 11 && notFound(i, arr)) { 
       arr[counter] = i; 
       counter++; 
      } 
      if (counter == arr.length) 
       break; 
     } 
     System.out.println(Arrays.toString(arr)); 
    } 

    private static boolean notFound(int num, int[] arr) { 
     for (int i = 0; i < arr.length; i++) { 
      if (num == arr[i]) 
       return false; 
     } 
     return true; 
    } 
} 
+0

對不起,我要求插入數組,如果他們沒有duplic – User2333

+0

這個程序是做同樣的,如果你會插入一個大於11的值,或者如果它已經存在於數組中,那麼它不會插入該值在數組,否則它會插入,根據我的理解,這只是您的要求。 –