JavaBug(1)——Cannot make a static reference to the non-static method Judge(int) from the type A

该代码示例展示了如何在Java中实现一个判断输入数值是否合法以及将其转换为二进制的功能。主要涉及的方法包括错误检查、二进制转换及输出。程序通过Scanner获取用户输入的数值和进制,然后进行处理。在静态的main方法中尝试调用非静态方法时遇到了问题,因为静态方法无法直接访问非静态成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package _4;
import java.util.LinkedList;
import java.util.Scanner;
public class A {
	public boolean Judge(int o) {
		if(o!=2&&o!=4&&o!=8&&o!=16) {
			System.out.println("error");
			return false;
		}
		else
			return true;
	}
	public void Binary(int i) {
		LinkedList<Object> a = new LinkedList<Object>();
		while(i!=0) {
		a.add(i%2);
		i=(i-i%2)/2;
		}
		System.out.println("转化为二进制=")
		for(int j=0;j<a.size();j++) {
			System.out.print(a.getLast());
			a.removeLast();
		}
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int r = 0;int obj = 0;
		System.out.println("请输入数:   请输如进制: ");
		r = in.nextInt();
		obj = in.nextInt();
		while(Judge(r)) {
			
		}
	}
}

书写代码的过程中遇到while内部以自定义函数为判断条件时报错的情况:
报错的描述
java中 静态方法不可以直接调用非静态方法和成员,也不能使用this关键字。静态的方法调用了非静态的方法所以报错。类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装载类的时候,这些静态的东西已经有了对象,它只是在这个类中暂时存在,不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。所以在静态方法中调用非静态方法时,编译器会报错(Cannot make a static reference to the non-static method func() from the type A)。

  1. java中不能将方法体内的局部变量声明为static
  2. main()函数是静态的,没有返回值,形参为数组。
  3. 非静态成员的可以随便调用静态成员
    解决办法就是实例化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值