2017-10-28 90 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后,文件编译时没有问题。