2013-10-19 31 views
-3

的問題是:發現在Java陣列更大數目

  1. 在陣列
  2. 返回包含更大的值,而不是索引值的索引數算出更大的數字。

代碼

public class temp02 { 

public static void consoledisplay(int [] array){ 
    for (int a = 0; a < array.length; a++) 
    System.out.println("Value of array index "+a+" is "+array[a]); 
    System.out.println(""); 
} 

public static int [] higherNumbers(int[] array, int numbers){ 
    // needed codes here 
    return array; 
} 

public static void main (String[] args) { 
    int [] x = new int[10]; 
    x[0] = 55; 
    x[1] = 27; 
    x[2] = 23; 
    x[3] = 22; 
    x[4] = 55; 
    x[5] = 56; 
    x[6] = 33; 
    x[7] = 21; 
    x[8] = 21; 
    x[9] = 99; 

    consoledisplay(x); 

    x = higherNumbers(x,4); 
    consoledisplay(x); 
} 
} 

電流輸出

值數組索引0的是55
值數組索引1的是27
值數組索引2的是23
數組索引3的值是22
值數組索引4的是55
值數組索引5的是數組索引6的56
值爲33
值數組索引7的是21
值數組索引8的是21
值數組索引的圖9是99

值數組索引0的是55
值數組索引1的是27
值數組索引2的是23
值數組索引3的是22
數組索引4的值是55
值數組索引5的是數組索引6的56
值是33
值數組索引7的是21
值數組索引8的是21
值數組索引9的是99

目標產出

數組索引0的值是55
值數組索引1的是27
值數組索引2的是23
值數組索引3的是22
值數組索引4的是55
值數組索引5的是數組索引6的56
值爲33
值數組索引的圖7是21
值數組索引8的是21
值數組索引9的是99

值數組索引0的是9
值數組索引1的是5
值數組索引的2 0
數值數組索引3的是4

+0

有什麼問題嗎? –

+2

似乎對我有些功課......你不應該自己解決嗎? – noone

+0

我不再上學。它實際上是我個人項目的一部分。我已經炸了我的大腦。 –

回答

0
int max = 0; 
     for (int i = 0; i < arr.length; i++) { 
      if (arr[i] > arr[max]) 
       max = i; 
     } 
     return max; 
+0

我嘗試過,但仍然無法正常工作。公共靜態INT [] higherNumbers(INT []數組,int數字){
int [] finalArray = new int [numbers];
finalArray [0] = Integer.MIN_VALUE;
對(INT A = 0;一<數;一個++){
的for(int i = 0;我 如果(陣列[I]> = finalArray [A])
finalArray [a] = i;
}
}
return finalArray;
}

+0

查找最大值的方法是我說的,而且你不需要使用靜態 –

+0

抱歉,你的代碼不起作用。 所需的返回值是int []。 return int []應該包含4個更大的整數,而不僅僅是一個。 而靜態需要聲明,否則編譯器會說這個「非靜態方法higherNumbers(int [],int)不能從靜態上下文中引用」 –

0

試試這個

public static int[] higherNumbers(int[] array, int numbers) { 
    int tempArr[] = Arrays.copyOf(array, array.length); 
    Arrays.sort(tempArr); 
    int retArr[] = new int[numbers]; 
    int j = 0; 
    for (int i = array.length - numbers; i < array.length; i++) { 
     for (int x = 0; x < array.length; x++) { 
      if (array[x] == tempArr[i]) { 
       retArr[j] = x; 
       break; 
      } 
     } 
     j++; 
    } 
    return retArr; 
} 
+0

酷男!它的作品^ _^ 你的救星! –

+0

我改變了int [] x = {0,9,3,4,5,6,7,8,9,9},在main方法中的值,以測試您的精彩方法,但輸出看起來很奇怪。 –

0

使用下面的代碼,它會工作

public static int[] higherNumbers(int[] array, int numbers) { 
    int tempArr[] = Arrays.copyOf(array, array.length); 
    Arrays.sort(tempArr); 
    int retArr[] = new int[numbers]; 
    int j = 0; 
    for (int i = array.length - numbers; i < array.length; i++) { 
     for (int x = 0; x < array.length; x++) { 
      if (array[x] == tempArr[i]) { 
       if(checkIndex(retArr,x)){ 
       continue; 
       }else{ 
        retArr[j] = x; 
       break; 
       } 
      } 
     } 
     j++; 
    } 
    return retArr; 
} 

private static boolean checkIndex(int[] indexArr, int index){ 
    boolean status = false; 
    for(int i=0; i<indexArr.length; i++){ 
     if(index == indexArr[i]){ 
      status = true; 
      break; 
     } 
    } 
    return status; 
} 
+0

現在這是一個完整而乾淨的答案!超酷的男人!你很聰明!非常非常感謝你!!! –