2017-10-28 94 views
0

我一直在使用geany創建Java程序在那裏到現在爲止我是能夠成功地編譯它們製成。下面在java中創建的簡單程序是使用geany創建的,但是發生了非法的charcter錯誤(\ u0000)。爪哇 - 編譯程序時非法字符錯誤使用geany u0000的

public class SumOfCubedDigits 
{ 
    public static void main(String[] args) 
    { 
     for (int i=1; i<=9; i++) 
     { 
      for (int j=0; j<=9; j++) 
      { 
       for (int k=0; k<=9; k++) 
       { 
        double iCubed=Math.pow(i,3); 
        double jCubed=Math.pow(j,3); 
        double kCubed=Math.pow(k,3); 
        double cubedDigits = iCubed + jCubed + kCubed; 
        int concatenatedDigits = (i*100 + j*10 + k); 
        if (cubedDigits==concatenatedDigits) 
        { 
         System.out.println(concatenatedDigits); 
        } 
       } 
      } 
     } 
    } 
} 

我在nano中重新創建了程序,它能夠成功編譯。然後我用SumTest.java的不同名稱將它複製到geany,編譯它並得到相同的非法字符錯誤。很顯然,錯誤在於用於覆盆子pi的geany IDE。我想知道如何修復編輯器來成功創建和編譯程序,因爲它不僅僅是這個程序,它是任何使用geany在java中創建的程序。

回答

1

這可能是Geany在保存源文件時使用的編碼問題。

如果在不指定參數-encoding的情況下使用javac編譯文件,則會使用平臺的默認編碼。在現代Linux上,這可能是UTF-8;在Windows上,它是ANSI字符集或UTF-16之一,我認爲。

要找出默認的編碼是什麼,你可以編譯和運行Java小程序:

public class DefaultCharsetPrinter { 
    public static void main(String[] argv) { 
     System.out.println(Charset.defaultCharset()); 
    } 
} 

這應該打印由Java程序使用的默認編碼的名稱。

在Geany中,您可以在菜單中設置文件編碼文檔>設置編碼。您需要將其設置爲javac所使用的相同值。 Geany手冊描述了additional options for setting the encoding

正如你看到很多錯誤抱怨空字符是最有可能Geany存儲與多個字節每個字符(例如UTF-16),而javac編碼的文件使用的編碼,每一個字節字符。如果我將源文件保存爲UTF-16,然後嘗試使用UTF-8編碼使用javac進行編譯,則會得到與您看到的相同的錯誤消息。在Geany中將文件保存爲UTF-8後,文件編譯時沒有問題。