class gcx
{
gcx(int x)
{
System.out.println("hello"+x);
}

public static void main(String[] args)
{
gcx a=new gcx(1);
a.g();  
}
void g()
{
System.out.println("..........");
}
}
这时可以正常显示~如换成:
class gcx
{
gcx(int x)
{
System.out.println("hello"+x);
}

public static void main(String[] args)
{
gcx a=new gcx(1);
System.out.println("999" + a.g());  //编译器说此处不允许使用void类型
}
void g()
{
System.out.println("..........");
}
}
这是为什么?我只是想输出字符串的同时,再通过调用别的函数输出别的字符串

解决方案 »

  1.   

    void是什么?难道忘了?void代表你的函数没有返回值,你不返回,怎么打印出来?
    改成
    String g()
    {
    return "......";
    }
      

  2.   

    因为out中没有如下函数:
    public void println(void v)所以不能输出
      

  3.   

    ft 
    没有 return你的函数啥都不会返回,那么+a.g()就没意义了
      

  4.   

    因为out中没有如下函数:
    public void println(void v)
    所以不能输出
    ************************************************
    System.out.println("999" + a.g());  
    此时参数不为void,所以这种解释欠妥个人看法:
    "999" + a.g()本身不合法,不行你把它付值给一个String变量,估计也会报错
      

  5.   

    倒,参数能为void的吗?你写一个让我看看
      

  6.   

    class gcx
    {
    gcx(int x)
    {
    System.out.println("hello"+x);
    }

    public static void main(String[] args)
    {
    gcx a=new gcx(1);
    String str = "999" + a.g();
    //System.out.println("999" + a.g());
    }
    void g()
    {
    System.out.println("..........");
    }
    }
    这样写还是错,说明“void型的函数为什么不能在system.out.println中调用”的观点不成立
    "999" + a.g() 这样的表达式,不能作相应的转变
      

  7.   

    hanjienihao1() :
    你写的这段的错在于str的类型是string,这时g()也得是相同类型的啊~~所以肯定错了
      

  8.   

    同样的g(),没有返回值~~想要的效果是对象a调用它~~
    直接写a.g()就可以~在system.out.println里和另一个字符串连接输出就不行了~~
    无论在哪,不都是调用吗???
      

  9.   

    又写了一个:
    class gcx
    {
    gcx(int x)
    {
    System.out.println("hello"+x);
    }

    public static void main(String[] args)
    {
    gcx a=new gcx(1);
    String str = "999" + a.g();
    //System.out.println("999" + a.g());
    }
    String g()
    {
    System.out.println("..........");
    return "ggggggggggg";
    }
    }
    编译通过~~但显示时却是:
    hello1
    ..........
    return后来的都不显示~。这又是怎么回事啊~
      

  10.   

    头一次看见有人这么用void函数的
      

  11.   

    在这不能把System.out.println("999" + a.g());里的a.g()看成调用吗?
      

  12.   

    真无语
    a.g()返回任何东西,这只是一个过程,你怎么把它和"999"相加??
    LZ你已经陷入牛角尖了,休息下再自己想想
      

  13.   

    void 就表示这个函数是没有返回值的,连个null也不会返回,所以是不可能可以和别的东西相加的,要相加的话,你必须得是一个对象或者一个值。
      

  14.   

    Top  
     killme2008(zane dennis) ( ) 信誉:96  2006-04-26 12:27:00  得分: 0  
     
     
       真无语
    a.g()返回任何东西,这只是一个过程,你怎么把它和"999"相加??
    LZ你已经陷入牛角尖了,休息下再自己想想
      
     -----------------------------------
    打错,不返回任何东西,你最好把返回是void的函数认为就是VB中的procedure
      

  15.   

    killme2008:
    把void换成了string,再加一条return~~这样时,就可以显示啊~不仅return能显示,system.out.println的内容也显示了
    这样的话,说明可以与999相加啊`~
      

  16.   

    Top  
     larrygao927() ( ) 信誉:100  2006-04-26 12:45:00  得分: 0  
     
     
       killme2008:
    把void换成了string,再加一条return~~这样时,就可以显示啊~不仅return能显示,system.out.println的内容也显示了
    这样的话,说明可以与999相加啊`~
      
     
    -----------------------------
    你换成String当然能显示了,因为你返回了一个String,可以跟"999"向连,可如果是void根本不返回东西,怎么加?你告诉我 
      

  17.   

    哦哦哦~~彻底明白了
    我过于关注system.out.println的显示了~想的是一调用就显示......~~然后跟999相连
    实际.....根本不跟999~~调用时要的是返回的内容~