黑马程序员技术交流社区
标题:
关于数据类型的问题
[打印本页]
作者:
杨敏
时间:
2012-7-10 00:29
标题:
关于数据类型的问题
本帖最后由 杨敏 于 2012-7-10 07:43 编辑
在取数组中最大值的练习时,将函数的返回值类型写成int和void都可以得出相同结果
class Getmax
{
public static void main(String[] args)
{
int[] arr ={5,34,54,23,65,3,4,87,4,21,7};
getmax(arr);
}
public static int getmax(int[] arr) //public static void getmax(int[] arr)同样可以。
{
int max = 0;
for(int x=0;x<arr.length;x++)
{
if(arr[x] < arr[max])
max =x;
}
System.out.println("max="+arr[max]);
}
}
按我的理解,运行函数后直接打印结果,返回值类型应该是void,为什么int也可以,这种情况怎么解释?
作者:
dev
时间:
2012-7-10 00:42
你这个程序是不能通过编译的,因为
getmax ()方法中的返回值类型是int
,
而你在程序中并
没有写return语句
,所以是编译失败的。
如果把返回值类型改成void的,即换成你注释中的代码,那么程序就可以
编译并运行成功了。
方法需不要需要返回值,是根据你方法的意义来决定,而已
一般我们不建议直接
在方法中打印输出,而应该把数据返回给调用者,让调用者自己去处理
,因为调用
者有可能不是想打印,而是想用来其他操作。
作者:
曹恒业
时间:
2012-7-10 00:45
可以很肯定的确定,如果返回值类型是int,那你的方法中最后必须以return结束,并且return后跟的是一个int型数据。
楼主在自己编译试试吧,我特意为你编译+截图,多动手,很多问题自己都能解决。
bug.jpg
(34.19 KB, 下载次数: 22)
下载附件
bug
2012-7-10 00:44 上传
作者:
李东升
时间:
2012-7-10 00:47
这个编译有问题的。你调用这个方法,是为了什么?是通过这个方法计算值还是通过这个方法打印,排序什么的,再根据这个来确定返回值类型。
作者:
杨敏
时间:
2012-7-10 07:57
可能是换成int时忘记保存源文件,导致两次编译都能通过,且结果相同,失误!感谢热心的黑马人!
作者:
朱东方
时间:
2012-7-10 13:24
建议你在编程时养成随时保存的习惯。以防断电什么的,导致代码都白写了。
关于定义函数返回值的问题。定义什么类型的,就一定要有一个相应的同一类型的值返回来。int就是int。
void类型,一定不能有返回值。否则编译出错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2