java调用另一个类的函数出现此处不能为空类型是什么原因?



public class JavaApplication13 {    
    public static void main(String[] args) {     
   int m;       
 System.out.println("请输入想要输入的图形号:");        
 Scanner reader=new Scanner(System.in);    
    m=reader.nextInt();        
Picture picture=new Picture();       
 switch(m)        {      
      case 1:System.out.println(Picture.picture1());break;        
                           }    
}
}class Picture{  
  public static void picture1()    
{        int i,j;     
   for(i=1;i<=5;i++)     
   {            
for(j=1;j<=i;j++)       
     {            
    System.out.print("*");      
      }          
  System.out.println("\n");    
    }  
  }

img


刚写了一个picture1函数,想测试一下正不正确,然后出现这种错误要怎么改?目前对java里从另一个类里调用函数还比较迷糊,不知道这样写格式对不对

你的picture1()是void类型的,没有返回值,所以报错了, 把println去掉吧,直接执行就好了

报错是因为,你的方法使void类型,没有返回值。不能直接输出 加一个返回值就可以了.
或者直接调用方法,就不用改下面的返回值

 System.out.println("请输入图形号:");
        Scanner reader=new Scanner(System.in);
        m=reader.nextInt();
        Picture picture=new Picture();
        Picture.picture1();


public class JavaApplication13 {

    public static void main(String[] args) {
        int m;
        System.out.println("请输入图形号:");
        Scanner reader=new Scanner(System.in);
        m=reader.nextInt();
        Picture picture=new Picture();
       
// 虽然不知道这一段想干啥,
       switch(m){
        case 1:System.out.println(Picture.picture1());
        break;
        }
    }
}

class Picture {
    public static String picture1() {
        int i, j;
        for (i = 1; i <= 5; i++) {
            for (j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println("\n");
        }
    }
}

public class JavaApplication13 {
    public static void main(String[] args) {
        int m;
        System.out.println("请输入想要输入的图形号:");
        Scanner reader=new Scanner(System.in);
        m=reader.nextInt();
        Picture picture=new Picture();
        switch(m)        {
            case 1:Picture.picture1();break;
        }
    }
}
class Picture {
    public static void   picture1() {
        int i, j;
        for (i = 1; i <= 5; i++) {
            for (j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println("\n");
        }
    }
}

System.out.println()要输出()中的内容,而调用的方法返回值为void,也就是空,这不是冲突了吗?
调用另一个类中的方法使用 Picture picture=new Picture();创建对象,然后picture.方法名就行;你创建的对象没有使用
方法使用static修饰,可以通过实例化对象调用,也可以通过类名.方法名调用,你就是用的这种方式调用另一个类中的方法的