2013-12-17 40 views
-3

十進制到二進制這個id程序把decimal轉換成binary,這裏有什麼錯誤?

錯誤:

C:\Users\i\Desktop\17.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]); 
     } 
    } 
} 

回答

2

作出這樣的方法靜態public static void print(int array[], int i)或者你可以創建一個類的對象,並調用打印方法。我會鼓勵使用適當的編碼慣例。類名稱應以大寫字母開頭

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

您不能從靜態上下文中引用非靜態方法。

  • 靜態方法勢必類本身。它使用類名來訪問。
  • 非靜態方法結合到類的一個實例。
  • 作爲非靜態未綁定到一個類,因此它不能直接從靜態上下文調用。
2

如果您想從靜態上下文中調用該方法,則方法print必須是靜態的。

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

要調用非靜態方法在你的主要方法,在你的主要方法創建類的一個對象,並調用它。

例如

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]); 
      } 
     } 
}