A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Person{

public void show(){
  
  System.out.println("Person show");
}
}
class SuperPerson{

private Person p;

SuperPerson(Person p){
  
  this.p = p;
}

public void method1(){
  p.show();
  System.out.println("method----1");
}

public void method2(){
  
  System.out.println(p.show()+"method----2");     
}
}
class PersonDemo{

public static void main(String[] args){
  
  Person p = new Person();
  
  SuperPerson sp = new SuperPerson(p);
  
  sp.method1();
  sp.method2();
  sp.method3();
  
}
}


红色标识的地方:为什么p.show()放在打印语句里就会报错。

--------------------配置: <默认>--------------------
D:\学习\20120603\PersonDemo.java:27: 此处不允许使用 "void" 类型
                System.out.println(p.show()+"method----2");
                                         ^
1 错误

处理已完成。

7 个回复

倒序浏览
System.out.println(p.show()+"method----2");     
里边的p.show() 并没有返回String或别的类型
public void show(){
  System.out.println("Person show");
}
这是一个方法 System.out.println()不能打印没返回类型的方法
如果返回一个String 或者别的类型并且此类型复写了toString方法 就可以用 System.out.println()打印出具体的值

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为p.show没有返回值,所以打印语句不知道打印什么内容,所以就报错了。
回复 使用道具 举报
胡团乐 发表于 2012-6-3 16:03
System.out.println(p.show()+"method----2");     
里边的p.show() 并没有返回String或别的类型
public vo ...

:D , 3Q——, 脑袋搞 糊涂了。看了半天没看出来!!
回复 使用道具 举报
本帖最后由 何拴绪 于 2012-6-3 16:20 编辑

因为输出语句中调用了Person类中的show函数,他的返回值为空,所以没法打印。可以简单的这样该一下
  1. class Person{

  2.         public String show(){
  3.    
  4.          return "Person show";
  5.         }
  6. }

  7. class SuperPerson{

  8.         private Person p;

  9.         SuperPerson(Person p){
  10.    
  11.                 this.p = p;
  12.         }

  13.         public void method1(){
  14.                 p.show();
  15.                 System.out.println("method----1");
  16.         }

  17.         public void method2(){
  18.    
  19.                 System.out.println(p.show()+" method----2");     
  20.         }
  21. }

  22. class PersonDemo{

  23. public static void main(String[] args){
  24.    
  25.    Person p = new Person();
  26.    
  27.    SuperPerson sp = new SuperPerson(p);
  28.    
  29.    sp.method1();
  30.    sp.method2();
  31.    //sp.method3();
  32.    
  33. }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
这就牵涉到方法的返回值问题啦。

错误原因:
你的show方法有void修饰符,也就是“空”、无返回值的一个方法。

而System.out.println()。这个必须要在括号内输入有返回值的~
因而当你调用p.show()方法时就不能够正确打印,因而报错。
而且也提示你的错误原因啦:
D:\学习\20120603\PersonDemo.java:27: 此处不允许使用 "void" 类型
                System.out.println(p.show()+"method----2");
                                         ^
解决办法:
修改下你的show()方法。改为
public String show() {
    return "Person show";
}

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
同学要多加强自己解决办法的能力哟~
你的程序报错里面说了,System.out.println(p.show()+"method----2")  这里不能够使用“void”类型
也就是说System.out.println()括弧内必须调用非空“void”类型,需要使用有“返回值”的类型

这里你想输出的是“Person show”字符串。

所以要把方法改成:public String show() {
      return "Person show";
}

然后再System.out.println(p.show());打印应该就可以啦~

评分

参与人数 1技术分 +1 收起 理由
袁錦泰 + 1

查看全部评分

回复 使用道具 举报
如果问题得到解决请标记为已解决,避免让后面的同学做出重复回答而得不到分....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马