簡體   English   中英

查找數組中最大元素的索引

[英]finding the index of the largest element in an array

我想編寫一個代碼,該代碼返回給定數組中最大元素的索引。 但是,當我嘗試編譯時,我收到一條似乎無法理解的消息。 盡管我已經完成了錯誤消息所說明的事情,但它始終告訴我要對其進行修復。 請幫助這個新手程序員!


public class largest {
    int[] array = new int[10];
    array[0] = 100;
    array[1] = 200;
    array[2] = 300;
    array[3] = 400;
    array[4] = 500;
    array[5] = 600;
    array[6] = 700;
    array[7] = 800;
    array[8] = 900;
    array[9] = 1000;
    int index;

    public static void main(String args) {

        for (int i=0; i<10; i++) {
            if (array[i] < array[i+1]) {
                index = i + 1;
            } else {
                index = i;
            }
            i++;
        }
        System.out.println(index);
    }
}

下面是編譯消息。


largest.java:3: error: ']' expected
    array[0] = 100;
      ^
largest.java:3: error: ';' expected
    array[0] = 100;
       ^
largest.java:3: error: illegal start of type
    array[0] = 100;
         ^
largest.java:3: error: <identifier> expected
    array[0] = 100;
          ^

對於所有索引,這種情況仍在繼續。

這種類型的初始化不能在方法之外進行:

array[0] = 100;
array[1] = 200;
array[2] = 300;
array[3] = 400;
array[4] = 500;
array[5] = 600;
array[6] = 700;
array[7] = 800;
array[8] = 900;
array[9] = 1000;

要么將作業移到您的變更主目錄中,

int[] array = new int[10];

int[] array = {100,200,300,400,500,600,700,800,900,1000};

順便說一句,除了此編譯錯誤之外,您的代碼也沒有執行應有的功能。 它將拋出ArrayIndexOutOfBoundsException(因為當我達到9時array[i+1]將超出范圍)。 為了找到最大元素的索引,您必須維護一個包含當前最大值的變量,並將其與數組的所有元素進行比較。

public static void main(String args) {
    int max = array[0];
    index = 0;
    for (int i=1; i<10; i++) {
        if (array[i] > max) {
            index = i;
            max = array[i];
        }
    }
    System.out.println(index);
}

有一些更正:

 public class largest { //move inside main() from here int[] array = new int[10]; array[0] = 100; array[1] = 200; array[2] = 300; array[3] = 400; array[4] = 500; array[5] = 600; array[6] = 700; array[7] = 800; array[8] = 900; array[9] = 1000; int index; //required default value //move inside main() till here public static void main(String args) { //missing [] symbol for (int i = 0; i < 10; i++) { if (array[i] < array[i + 1]) { index = i + 1; } else { index = i; } i++; } System.out.println(index); } } 

您可以嘗試以下示例:

 public class largest { public static void main(String[] args) { int[] array = { 345, 768, 95, 345, 678 }; //array with default elements int index = -1, high = array[0], i = 0; for (int e: array) { //loop in every element if (e > high) { //check for highest value index = i; //assign index of the highest value till now high = e; //assign the highest value till now } i++; //next index } System.out.println(index); //-1 if not found } } 

public static void main(String[] args) {
    int[] array = {100, 200, 300, 400, 500, 600, 700, 800, 900};
    System.out.println(highestValue(array));
}

public static int highestValue(int[] arr) {

    int index = 0;
    int highestValue = Integer.MIN_VALUE;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM