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

为什么错了?

ublic class HelloWorld {

    

    // 定义静态变量score1

    static int score1 = 86;

    // 定义静态变量score2

          int score2 = 92; 


    // 定义静态方法sum,计算成绩总分,并返回总分

public   static  int sum() { 

     

    int num=score1+HelloWorld.score2;

      

      return num;

}


public static void main(String[] args) {

        

        // 调用静态方法sum并接收返回值

int allScore = sum;

        

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

}

}


正在回答

4 回答

首先,  int score2 = 92; 和 int num=score1+HelloWorld.score2;矛盾,静态方法不能直接访问非静态变量,你的score2定义为非静态变量,但你的HelloWorld.score2却在直接访问score2,(注意,通过类名进行访问属于直接访问,非直接访问是指通过创建对象再调用对象的方式访问)。

其次,int allScore = sum();   这句错了,你这是将‘sum()’作为一个变量直接赋给allScore。直接访问静态方法的意思是,不用通过创建对象的方式来访问,而是通过类名来访问,但是,不管是哪种方式访问方法,都要用上调用对象的基本格式,即“  对象名或类名.方法名(); "  , 所以正确的应该为 int allScore = HelloWorld.sum();


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

1,应该是

HelloWorld hellp=new HelloWorld();

int sum=score1+hello.score2;

非静态变量不能直接调用

2.int allScore = sum;这个不对,sum只是一个局部变量,他的作用域只在sum()这个方法中,所以应该是

int allScore=sum();

0 回复 有任何疑惑可以回复我~
  1. 要求:定义静态变量score2为静态;

  2. int allScore = sum;你这里是赋值,不是调用方法

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

https://img1.sycdn.imooc.com//5b7f9de700014c7001760036.jpg静态变量


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

举报

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

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

进入课程

为什么错了?

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