非法开始类型:通常此消息表示您在此行之前缺少 {



谁能帮我解决这个错误?我无法纠正此代码。我无法理解错误。

import java.io.*;
import java.util.Scanner;
public class findMax{
    public static int findMax(int[] arr){
        int max = 0;
        for (int i = 1; i < value.length; i++){
            if (value[i] > max){
                max = value[i];
            }
        }
        return max;
    }   
    public static void main(String[] args){
        int value[];
        Scanner in = new Scanner(System.in);
        value = in.nextInt();
        findMax(value);
    }
}

在函数 findMax 中,您需要与数组变量名保持一致(您当前正在传递int[] arr但访问value)。此外,您不希望将max默认为 0(您可以使用 arr[0] )。像这样,

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

接下来,您需要实例化值并将其赋值到数组中(并对findMax的结果执行某些操作,因为未使用结果)。有几种方法可以做到这一点。一个可能是,

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int[] value = new int[] { in.nextInt() };
    int max = findMax(value);
    System.out.printf("The max value in %s is %d.%n", Arrays.toString(value), max);
}

或者,您可以创建类似

int[] value = new int[1];
value[0] = in.nextInt();

此外,如果您在findMax中使用Math.max(int, int),则可以消除if

public static int findMax(int[] arr) {
    int max = arr[0];
    for (int i = 1; i < arr.length; i++) {
        max = Math.max(max, arr[i]);
    }
    return max;
}
import java.util.ArrayList;
import java.util.Scanner;
public class Stack{ public static int findMax(ArrayList<Integer> arr){
    int max = 0;
    for (int i = 1; i < arr.size(); i++){
        if (arr.get(i) > max){
            max = arr.get(i);
        }
    }
    return max;
}   
public static void main(String[] args){;
    Scanner in = new Scanner(System.in);
    ArrayList<Integer> value = new ArrayList<Integer>();
    System.out.print("Enter integers please ");
    System.out.println("(EOF or non-integer to terminate): ");
    while (in.hasNextInt()) {
        value.add(in.nextInt());
    }
    System.out.println(findMax(value));
}}
  Try this 
 public static int findMax(ArrayList<Integer> arr){
            int max = arr.get(0);
            for (int i = 1; i < arr.size(); i++){
                if (arr.get(i) > max){
                    max = arr.get(i);
                }
            }
            return max;
        }   
        public static void main(String[] args){;
            Scanner in = new Scanner(System.in);
            ArrayList<Integer> value = new ArrayList<Integer>();
            System.out.print("Enter integers please ");
            System.out.println("(EOF or non-integer to terminate): ");
            while (in.hasNextInt()) {
                value.add(in.nextInt());
            }
            System.out.println(findMax(value));
        }

最新更新