2017-02-16 18 views
-3

所以基本上我遇到了一种情况,在我的编程中,我需要让程序查看数组的某一部分是否与数组的任何其他部分相同。Java编程,函数中的数组

例如,如果我有一个数组称为数组[5],并且我需要查看数组[0]是否等于数组的其他任何部分,我该怎么做?当然,假设我从用户那里获得输入,并且必须查看用户是否输入了相同的号码。

这里是我的现实生活中的例子,我有这个问题发生在isUnique方法:

import java.util.Scanner; 

public class Week06_NelsonPimentel_Assignment { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     int[] validnum; 
     int i = 0; 
     validnum = new int[5]; 
     boolean isvalid; 
     boolean isunique; 

     System.out.println("Please enter a number between 50 and 100"); 

     while (i < validnum.length) { 
      validnum[i] = input.nextInt(); 

      if (validnum[i] <= 101 && validnum[i] >= 49) { 
       isvalid = isValid(validnum[i]); 
       if (i > 0) { 
        isunique = isUnique(validnum[i], validnum[i]); 
       } 
       i++; 
      } else { 
       System.out.println("Invalid number***"); 
      } 
     } 
    } 

    static boolean isValid(int a) { 
     boolean b = true; 
     System.out.println("valid"); 
     return b; 
    } 

    static boolean isUnique(int a, int b) { 
     boolean yes; 
     int i; 
     if (a == b) { 
      System.out.println("This is not a unique number"); 
      yes = false; 
     } 
     else { 
      System.out.println("This is a unique number!"); 
      yes = true; 
     } 
     return yes; 
    } 
} 
+1

'isunique = isUnique(validnum [i],validnum [i]);'将导致isunique始终为'true'。 – aUserHimself

+0

严禁你的代码令人困惑,出于某种原因'isValid'总是返回'true'。 –

+0

所以我把isUnique(validnum [i],validnum [i])切换到isUnique(validnum [i],validnum),这是否会使validnum引用所有值,而不仅仅是一个? – zenon

回答

0

你将不得不遍历数组中的每个元素和当前元素与新的比较:

if (i > 0) { 
    isunique = true; 
    for(int j = 0; j < i; j++) { 
     if (validnum[i] == validnum[j]) { 
      isunique = false; 
      System.out.println(validnum[i] + " is not an unique number"); 
      break; 
     } 
    } 
    if(isunique == true) { 
     System.out.println(validnum[i] + " is an unique number"); 
    } 
} 
i++; 
+0

不幸的是,我的教授希望这个程序提交的方式不适合这种格式,但是你的回复给了我一个非常好的主意,我认为应该工作,或多或少我会实施你刚刚教给我的东西,但在一种方法中,感谢您的答复! – zenon

+0

是的,这几乎是正确的做法。但他已将新值分配给阵列。所以你总会找到一场比赛! – DiabolicWords

+0

@DiabolicWords不完全,请检查:'j aUserHimself