这个id程序把十进制改成二进制,这里有什么错误



十进制到二进制

错误:

C:UsersiDesktop17.12.2013>javac bin2dec.java
bin2dec.java:20: non-static method print(int[],int) cannot be referenced from a
static context
print(array,i);                        ^
1 error

代码:

import java.util.*;
import java.util.Scanner;
public class bin2dec
{
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);
        System.out.println("No");
        int n = input.nextInt();
        int array[] = new int[20];
        int i = 0;
        while (n < 0)
        {
            array[i] = n % 2;
            n = n / 2;
            i++;
        }
        print(array, i);
    }
    public void print(int array[], int i)
    {
        for(int j = i-1; j > 0; j--)
        {
            System.out.print(array[j]);
        }
    }
}

如果要从静态上下文调用方法print,则该方法必须是静态的。

public static void print(int array[], int i)

使该方法为静态public static void print(int array[], int i),或者您可以创建该类的对象并调用print方法。我鼓励使用适当的编码约定。类名应以大写字母开头

Bin2Dec converter = new Bin2Dec();
converted.print(array,i);

不能从静态上下文引用非静态方法。

  • 静态方法绑定到类本身。它是使用类名访问的
  • 非静态方法绑定到类的实例
  • 由于非静态不绑定到类,因此不能直接从静态上下文调用它

您正在主方法中调用非静态方法,在主方法中创建类的对象并使用它进行调用。

例如

import java.util.*;
import java.util.Scanner;
public class bin2dec
{
        public static void main(String args[])
        {
            bin2dec object = new bin2dec();
            Scanner input=new Scanner(System.in);
            System.out.println("No");
            int n=input.nextInt();
            int array[]=new int[20];
            int i=0;
            while(n<0)
            {
                array[i]=n%2;
                n=n/2;
                i++;
            }
            object.print(array,i);
        }
        public void print(int array[], int i)
        {
            for(int j=i-1; j>0; j--)
            {
            System.out.print(array[j]);
            }
        }
}

相关内容

最新更新