经典java作业:数组无法找到变量

时间:2017-06-28 15:05:35

标签: java arrays sorting

这个程序的目的是创建一个数组[n = scan],插入n个数字并返回最大数字。 不幸的是,第二部分不起作用,我无法弄清楚为什么。得分变量适用于第一类及其公共,因此可以重复使用,对吗? 有帮助吗? 我有点像诺贝尔所以怜悯!

 //script per creare array [n] ins da tastiera e far scrivere i suoi elementi 
import java.util.*;
public class es2{
    public static void main(String[] args){
        // Read size of array and declare array
        System.out.println("Enter number of elements:");
        Scanner scan = new Scanner(System.in);
        int size = scan.nextInt();
        double[] score = new double[size];
        // read elements and store in array
        for (int k = 0; k < score.length; k++)
        {
            System.out.println("Enter element " + k);
            score[k] = scan.nextDouble();
        }
    }
    public int max(){
        //create var max
        int max = 0;
        for (int i = 1; i < score.length; i++)
        {if (score[i] > score[max])
                max = i;
        }   
                System.out.println("il max e' "+score[max]);

    }
}

4 个答案:

答案 0 :(得分:1)

以这种方式将数组传递给静态方法max()

public class es2 {

  public static void main(String[] args){

    System.out.println("Enter number of elements:");
    Scanner scan = new Scanner(System.in);
    int size = scan.nextInt();
    double score[] = new double[size];
    for (int k = 0; k < score.length; k++)
    {
        System.out.println("Enter element " + k);
        score[k] = scan.nextDouble();
    }
    max(score);
  }

  public static void max(double[] score){

    int max = 0;
    for (int i = 1; i < score.length; i++){
        if (score[i] > score[max])
            max = i;
    }   
    System.out.println("il max e' "+score[max]);

   }
}

修改

想要返回最大值,做一些小修改:

public static int max(double[] score){

    int max = 0;
    for (int i = 1; i < score.length; i++){
        if (score[i] > score[max])
            max = i;
    }   
    System.out.println("il max e' "+score[max]);
    return (int)score[max];  
}

答案 1 :(得分:0)

您需要更改分数范围,并将返回值添加到max或使方法无效。由于其范围,max方法无法看到变量“得分”。

import java.util.*;

public class es2{

    private double[] score;
    private Scanner scan = new Scanner(System.in);

    public static void main(String[] args){
        es2 main = new es2();
        main.load_values();
        main.max();
    }

  public void load_values(){
        System.out.println("Enter number of elements:");
        int size = scan.nextInt();
        score = new double[size];
        // read elements and store in array
        for (int k = 0; k < score.length; k++)
        {
            System.out.println("Enter element " + k);
            score[k] = scan.nextDouble();
        }
  }

    public void max(){
        //create var max
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < score.length; i++)
        {
          if (score[i] > max)
              max = score[i];
        }   
        System.out.println("il max e' "+max);

    }
}

答案 2 :(得分:-1)

可以这样工作

import java.util.*;
public class es2{

double[] score;

public static void main(String[] args){
    // Read size of array and declare array
    System.out.println("Enter number of elements:");
    Scanner scan = new Scanner(System.in);
    int size = scan.nextInt();
    score = new double[size];
    // read elements and store in array
    for (int k = 0; k < score.length; k++)
    {
        System.out.println("Enter element " + k);
        score[k] = scan.nextDouble();
    }
}
public int max(){
    //create var max
    int max = 0;
    for (int i = 1; i < score.length; i++)
    {if (score[i] > score[max])
            max = i;
    }   
            System.out.println("il max e' "+score[max]);

}

}

答案 3 :(得分:-1)

`public class ArrayMax {

public static void main(String[] args){
    // Read size of array and declare array
    System.out.println("Enter number of elements:");
    Scanner scan = new Scanner(System.in);
    int size = scan.nextInt();
    double[] score = new double[size];
    // read elements and store in array
    for (int k = 0; k < score.length; k++)
    {
        System.out.println("Enter element " + k);
        score[k] = scan.nextDouble();
    }
    max(score);
}

public static int max(double[] score) {
    // create var max
    int max = 0;
    for (int i = 1; i < score.length; i++) {
        if (score[i] > score[max])
            max = i;
    }
    System.out.println("max element is' " + score[max]);
    return (int) score[max];
}

} `