gpt4 book ai didi

java - 编译使用 geany\u0000 编写的程序时出现非法字符错误

转载 作者:行者123 更新时间:2023-12-02 12:04:40 25 4
gpt4 key购买 nike

我一直在使用 Geany 来创建 Java 程序,到目前为止我都能够成功编译它们。下面用Java创建的简单程序是使用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,编译它并得到相同的非法字符错误。显然,错误出在 Raspberry Pi 的 Geany IDE 上。我想知道如何修复编辑器以成功创建和编译程序,因为它不仅仅是这个程序,它是使用 Geany 在 Java 中创建的任何程序。

最佳答案

这可能是 Geany 在保存源文件时使用的编码问题。

如果您使用 javac 编译文件而未指定 -encoding 参数,则将使用平台的默认编码。在现代 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后,文件编译没有问题。

关于java - 编译使用 geany\u0000 编写的程序时出现非法字符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com