//程序如下,不知道三目运算符不是这样用的,提示?为意思的数据类型.
public class aa
{
public static void main(String args[])
{
final int size=10;
int max,min,i;
int arr[]=new int[size];
for(i=0;i<size;i++)
{
arr[i]=(int)(Math.random()*100);
}
for(i=0;i<size;i++)
{
System.out.println(arr[i]);
arr[i]>max ? max=arr[i]:max=max;
arr[i]<min ? min=arr[i]:min=min;
}
System.out.println("最大值= " + max);
System.out.println("最小值= " + min);
}
}

解决方案 »

  1.   

    用错了,看你是多少目运算了 ^_^
    arr[i]>max ? max=arr[i]:max=max;
    arr[i]<min ? min=arr[i]:min=min;==============>>>>>>>max = arr[i]>max ? arr[i]:max;
    min = arr[i]<min ? arr[i]:min;
      

  2.   

    final int size = 10;
    int max = 0, min = 0, i;
    int arr[] = new int[size];
    for (i = 0; i < size; i++) {
        arr[i] = (int) (Math.random() * 100);
    }
    max = min = arr[0];
    for (i = 0; i < size; i++) {
        System.out.println(arr[i]);
        max = arr[i] > max ? arr[i] : max;
        min = arr[i] < min ? arr[i] : min;
    }
    System.out.println("最大值=" + max);
    System.out.println("最小值=" + min);
      

  3.   

    三目运算符的语法格式:boolean-exp ? value0 : value1;换成if-else解释:if(boolean-exp)
     return value0;
    else
     return value1;即boolean-exp为真,操作符返回value0,否则返回value1max = (arr[i]>max ? arr[i]:max);语句中,先进行三目运算,然后
    把返回的值赋给max
      

  4.   

    max = arr[i] > max ? arr[i] : max;
    =================
    这样写不好,虽然语法没问题.推荐写成if else,增强可读性。
      

  5.   

    max=arr[i]>max ?arr[i]:max;
    min=arr[i]<min ? arr[i]:min;说实话,你还是这样用把,这里不应该使用三目运算符;if(arr[i]>max){max=arr[i]};
    if(arr[i]<min){min=arr[i]};连else都不用
      

  6.   

    楼上的各位说了三目运算符的问题,并给出了改正的程序,但还有些小小的问题。1、if else的问题if(arr[i]>max){max=arr[i]};
    if(arr[i]<min){min=arr[i]};这样的程序是没错(除了分号的位置放错地方了^_^),但对于同一个数而言,不可能既是最大值又是最小值,但上面的这种写法对于数组的每一个元素都要判断两次,如果改成
    if(arr[i] > max) {
        max = arr[i];
    } else if (arr[i] < min) {
        min = arr[i];
    }
    这样的话会稍微改善一下。当然,把if和else if的判断条件和语句内容换一下位置也是同样的道理。2、初值问题楼主的程序没有给max和min赋初值,所以即使你三目运算的地方没错,整个程序也不会编译通过。看楼上的各位给max和min的初值是0,但这样是不对的:假如arr[]数组所有的数都是正数,程序算出的min可是0而不是真正想要的答案。所以,这种情况下,可以这样来做:int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;但是这样同样存在问题,比如如果arr[]数组是一个递增的序列,这样循环体内每次都只给max赋值而未给min赋值,最后min的值只会是初值。所以可以先把第一个元素赋给max和min。具体程序如下:
    public class MaxMin {
    public static void main(String args[]) {
    final int size = 10;
    int i;
    int arr[] = new int[size];
    for (i = 0; i < size; i++) {
    arr[i] = (int) (Math.random() * 100);
    }
    int max = arr[0];
    int min = arr[0];
    for (i = 1; i < size; i++) {
    if (arr[i] > max) {
    max = arr[i];
    } else if (arr[i] < min) {
    min = arr[i];
    }
    }
    System.out.println("最大值=" + max);
    System.out.println("最小值=" + min);
    }
    }假设size一定大于0(也就是说arr[0]一定有值),这个假设是合理的,因为size等于0的话就是根本没有数组,何谈最大最小值?