为了账号安全,请及时绑定邮箱和手机立即绑定

想不明白为什么这样不行?

http://img1.sycdn.imooc.com//5e97cc7100013e3805660480.jpg   

  1. 第九行的sum 我只理解为一个方法,

  2. 11行的 return 我只理解为是一个返回值,并没有求和,return score1+core2 ,它还是会返回这个score1+score2

  3. 所有我个人理解 他是不是应该定义一个总分   如 int what = score1 +score2 ; 然后再返回 return what ;才合理呢?

  4. 调用方法我直接就可以写 HelloWorld.sum();

  5. 输出总成绩 what 

     我这样的理解难道有问题 ,课堂里的答案我理解不了

                                              

正在回答

11 回答

public class HelloWorld {

    static int score1 = 86;

    static   int score2 = 92; 



public  static   int sum() { 

      HelloWorld a=new HelloWorld();

     int what=score1+score2;

      return what;

}

public static void main(String[] args) {

int allScore = HelloWorld.sum();

System.out.println("总分:" + allScore);

}

}


这样就行了,你最后的what没被传递

0 回复 有任何疑惑可以回复我~

 main方法里面,你HelloWorld.sum() 得到的是一个值,你需要将这个值赋给一个变量,再将它打印出来

19行可以改写成

		int what =sum();        		
		System.out.println("总分:" + what);

这个what和你静态方法(sum)里面的what是不一样的,你不能在main 里面直接调用 静态方法方法(sum)里面的what,也就是说你在main里面直接打印what是会报错的。

0 回复 有任何疑惑可以回复我~
#1

慕标3061610

123
2022-06-01 回复 有任何疑惑可以回复我~
#2

慕标3061610

2234
2022-06-01 回复 有任何疑惑可以回复我~
#3

慕标3061610

345
2022-06-01 回复 有任何疑惑可以回复我~
#4

慕标3061610

456
2022-06-01 回复 有任何疑惑可以回复我~
#5

慕标3061610

567
2022-06-01 回复 有任何疑惑可以回复我~
#6

慕标3061610

678
2022-06-01 回复 有任何疑惑可以回复我~
#7

慕标3061610

789
2022-06-01 回复 有任何疑惑可以回复我~
#8

慕标3061610

890
2022-06-01 回复 有任何疑惑可以回复我~
#9

慕标3061610

890-
2022-06-01 回复 有任何疑惑可以回复我~
#10

慕标3061610

1111
2022-06-01 回复 有任何疑惑可以回复我~
#11

慕标3061610

2222
2022-06-01 回复 有任何疑惑可以回复我~
查看8条回复

我刚学到这里,我的理解是下面 main方法里少了声明一个int what来接收数据,

方法里面return后面的数可以是 1,2,4,5,what,score1,score2都可以,跟main里面没有关系。main方法里需要用整型来接收HelloWorld.sum()方法的返回值。

所以我觉得应该是上图里少了定义一个整型变量。


0 回复 有任何疑惑可以回复我~

what 是局部变量,去不了别的方法里面。你把int what = 0写在在sum()方法。然后在sum()方法里面给what再赋值。

因为score2是非静态变量,所以你得在sum()方法中创建一个对象去调用它:HelloWorld helloWorld = new HelloWorld();

然后你再重新赋值:what = score1 + helloWorld.score2;

                              return what;

最后在main方法中创建一个变量去接收总分:int allScore = sum();

然后控制台输出:System.out.println("总分:" + allScore);

0 回复 有任何疑惑可以回复我~

what 是局部变量,去不了别的方法里面。所以最后一行代码哪个what会报错;另外19行代码,你只调用了return的值,但是没有显示的功能。

0 回复 有任何疑惑可以回复我~
  1. sun()确实只是一个方法;

  2. return只能返回一个值,return score1+core2 会先计算在返回

  3. 我觉得不太合理,注意sum方法,当你调用这个方法时你是不是已经知道这是求和的方法,你知道调用这个方法便会返回一个和,所以在这声明一个见名知意的变量名接收这个方法的返回值会不会更合理呢?换种说法,当我调用sun方法时,我知道这个方法是求和,它会返回一个值,当我需要多次使用它时,我会声明一个变量取个合适的变量名用来接收这个值,我并不需要sum方法里有个变量被赋予这个值,因为很多余,例如你写的what,它只是一个局部变量,我在别的方法里没法调用,这个方法的作用就是求和然后把结果这个值传递,所以直接return score1+score2即可,你先做的int what = score1 +score2 ;其实也就是将结果这个值赋给了what然后return what,最终结果也是传递这个值,所以没必要声明这个what变量在栈区中,很多余很浪费。

  4. HelloWorld.sum()现在是一个值,要么直接输出,要么声明变量赋值使用,单写HelloWorld.sum()没啥意义。

  5. 输出总成绩 what ,抱歉你没有这个变量,它是个局部变量,在sum方法结束时它就over了,所以。。。

3 回复 有任何疑惑可以回复我~

what只是一个局部变量,只能在sum()函数中使用,你在main方法中是无法调用这个变量的

0 回复 有任何疑惑可以回复我~

是不是因为main方法中无法调用sum方法里定义的局部变量what

0 回复 有任何疑惑可以回复我~

"what"在mine函数中用不了


0 回复 有任何疑惑可以回复我~

what 是一个局部变量,只能在定义它的方法内使用。而且sum()方法定义为int,那么他是有返回值的,你需要定义一个变量去接受他比如int sum1214=HelloWorld.sum();,最后输出sum1214或不要int sum1214=HelloWorld.sum()这一步直接输出sum()。

0 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530629    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

想不明白为什么这样不行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信