十进制到二进制
错误:
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]);
}
}
}