黑马程序员技术交流社区

标题: 关于数组的问题 [打印本页]

作者: 谭培龙    时间: 2012-7-6 14:47
标题: 关于数组的问题
本帖最后由 谭培龙 于 2012-7-7 17:15 编辑

import java.util.*;
class Test1 {
        public static void main(String[] args){
                int[] a = {1,3,7,4,4,3,2};
                int[] b = {1,3,5,4,4,3,2};
                ceshi(a);
                ceshi(b);
               
        }
        public static void ceshi(int[] a){
                Arrays.sort(a);
                int min = a[0];
                int max = a[a.length-1];
                if((max-min)>a.length){
                        System.out.println("不能组成连续的数字。");
                        return;
                }
                else
                        {
                        for(int x = 0;x<a.length-1;x++)
                                {
                                int first = (int)a[x];//这里为什么要int强转 我去掉int也能运行
                                int second = (int)a[x+1];
                                if(first != second){
                                        if((first+1) != second){
                                                System.out.println("不能组成连续的数字。");
                                                return;
                                        }
                                }
                        }
                }
}
               
        }
就是中间那里为什么要强转int?
作者: 刘美丽    时间: 2012-7-6 15:04
数组a[x]本来就是int类型,所以加不加(int)即进行不进行强转都没有关系
作者: 黎健东    时间: 2012-7-6 21:45
没有必要加强转

1、主函数中,int[] a,ceshi(a);也就是定义了a这个整形数组,并把它传到ceshi这个函数里边去
2、public static void ceshi(int[] a),这里ceshi这个函数也用int[] a接受传过来的a,传过去的是数组,接受的也是数组,一致正确,所以在这个函数中,a是一个整形数组
3、int first = (int)a[x];在整形数组a中,取出一个元素,赋给first,而first本身就是int整形,而a本身就是整形,取出的元素必然也是整形元素,将整形元素a[x]赋给整形first,类型一样,没有必要将a强转

作者: 朱东方    时间: 2012-7-7 02:49
这个强转是毫无意义的。

本身你定义的public static void ceshi(int[] a)只能接受int型数组。
所以a[x]一定会是整型的。
所以根本就不需要进行类型转换。
当然加上了也没有任何错误。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2