15

可能重复:
在 Java 中查找具有不同数据类型的最多 3 个数字(基本 Java)

编写一个程序,使用扫描仪读取三个整数(正数),显示最大的三个数。(请不要使用任何运算符&&或完成||。这些运算符将很快在课堂上介绍。类似的循环不是必需的。)

Some sample run: 

Please input 3 integers: 5 8 3
The max of three is: 8

Please input 3 integers: 5 3 1
The max of three is 5

import java.lang.Math;
import java.util.Scanner;
public class max {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please input 3 integers: ");
        String x = keyboard.nextLine();
        String y = keyboard.nextLine();
        String z = keyboard.nextLine();
        int max = Math.max(x,y,z);
        System.out.println(x + " " + y + " "+z);
        System.out.println("The max of three is: " + max);
    }
}   

我想知道这段代码有什么问题,以及当我输入 3 个不同的值时如何找到最大值。

4

3 回答 3

36

两件事:更改变量x, y, zasint并调用方法 asMath.max(Math.max(x,y),z)因为它只接受两个参数。

总之,更改如下:

    String x = keyboard.nextLine();
    String y = keyboard.nextLine();
    String z = keyboard.nextLine();
    int max = Math.max(x,y,z);

    int x = keyboard.nextInt();
    int y = keyboard.nextInt();
    int z = keyboard.nextInt();
    int max =  Math.max(Math.max(x,y),z);
于 2012-10-09T05:00:39.963 回答
2

您应该了解更多java.lang.Math.max

  1. java.lang.Math.max(arg1,arg2)只接受 2 个参数,但您在代码中编写了 3 个参数。
  2. 2 个参数应该是double, int,longfloat您正在StringMath.max 函数中编写参数。您需要以所需的类型解析它们。

由于上述不匹配,您的代码将产生编译时错误。

尝试以下更新的代码,这将解决您的目的:

import java.lang.Math;
import java.util.Scanner;
public class max {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please input 3 integers: ");
        int x = Integer.parseInt(keyboard.nextLine());
        int y = Integer.parseInt(keyboard.nextLine());
        int z = Integer.parseInt(keyboard.nextLine());
        int max = Math.max(x,y);
        if(max>y){ //suppose x is max then compare x with z to find max number
            max = Math.max(x,z);    
        }
        else{ //if y is max then compare y with z to find max number
            max = Math.max(y,z);    
        }
        System.out.println("The max of three is: " + max);
    }
} 
于 2012-10-09T04:42:11.513 回答
2

如果您提供您看到的错误,这将有所帮助。查看http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html,您会看到 max 仅返回两个数字之间的最大值,因此您的代码可能甚至没有编译。

首先解决所有编译错误。

然后你的作业将包括通过比较前两个数字来找到三个数字的最大值,并将最大值结果与第三个值进行比较。你现在应该有足够的能力找到答案了。

于 2012-10-09T04:20:06.097 回答