Java 解释错误输出发生的原因? 公共类ArrayIntro { 公共静态void main(字符串[]args) { int[]a; a=新整数[10]; 扫描仪sc=新的扫描仪(System.in); 对于(inti=0;i

Java 解释错误输出发生的原因? 公共类ArrayIntro { 公共静态void main(字符串[]args) { int[]a; a=新整数[10]; 扫描仪sc=新的扫描仪(System.in); 对于(inti=0;i,java,arrays,io,java.util.scanner,Java,Arrays,Io,Java.util.scanner,只需使用以下代码即可 当您在for循环内部打印sout时,它将打印数字和空格的总和(')。空格的ASCII值为32,因此您可以看到每个元素的附加值为32 因为你可以参考这个链接,它将帮助你 简单地说,您可以这样写:System.out.print(新整数(“”));,它将打印32 如果只想添加空格,请使用双引号。 系统输出打印(e+); < P>单引号作为字符和字符加上整数将用ASCII代码进行总结。 public class ArrayIntro { public static voi

只需使用以下代码即可

当您在for循环内部打印sout时,它将打印数字和空格的总和(
'
)。空格的ASCII值为32,因此您可以看到每个元素的附加值为32

因为你可以参考这个链接,它将帮助你

简单地说,您可以这样写:System.out.print(新整数(“”));,它将打印32

如果只想添加空格,请使用双引号。
系统输出打印(e+);

< P>单引号作为字符和字符加上整数将用ASCII代码进行总结。
public class ArrayIntro
{
    public static void main(String[] args)
    {
        int[] a;
        a=new int[10];
        Scanner sc =new Scanner(System.in);
        for(int i=0;i<10;i++)
        {
            a[i]=sc.nextInt();  
        }
        for(int e:a)
        {
            System.out.print(e+' ');
        }
    }
}
publicstaticvoidmain(字符串[]args)
{
int[]a;
a=新整数[10];
扫描仪sc=新的扫描仪(System.in);

for(int i=0;i简单地说,“”是ASCII中的一个字符,它的值是32。因此,据我所知,您可能希望它直接打印,以便您可以将“”替换为“”。请始终记住,单引号用于字符,双引号用于字符串

对于您的答案,您可以这样做:
System.out.print(e+);


与此相反:
System.out.print(e+”;

简而言之,要修复程序,您需要使用
(带双引号)而不是
'

问题在于
+
操作符在Java中有两种不同的含义

  • 如果其中一个操作数是
    字符串
    ,则
    +
    表示“将这两个操作数连接在一起”。如果另一个操作数不是
    字符串
    ,则必须以某种方式对其进行转换,并且有一些规则可供参考
  • 如果两个操作数都不是
    字符串
    ,则
    +
    表示“将这两个操作数相加”-也就是说,它们被视为数字。它们可以被添加为
    double
    值、
    float
    值、
    long
    值或
    int
    值,具体取决于数据类型。但如果它们是
    short
    byte
    char
    ,它们将被视为
    int
    。这称为二进制数字Java语言规范对此进行了详细解释
现在在Java中,单引号用于分隔
char
文字。因此,当您编写
e+'
时,您将
int
添加到
char
中。这是一个加法-
char
被视为
int
,操作数被添加为数字。
对应的数字是32,sinc这是Java使用的字符编码中的数值,类似于UTF-16。与本页上的一些其他答案相反,它不是ASCII


双引号用于分隔
字符串
文字。因此,如果您写入
e+“”
,则操作数是
int
字符串
。这意味着您不再添加任何内容,而是进行连接。
int
首先转换为
字符串
,然后连接到
“”
,这将为您提供您期望的结果。

尝试使用
而不是
-当您将
字符添加到数字中时,
数据类型会做一些疯狂的事情。谢谢。但为什么它会添加这些呢?此行的行为类似于
System.out.print(e+“”);
1+32,2+32,3+32,因为ASCII的空格是32。您可以使用双引号代替单引号,如“System.out.println(e+”)59问题是为什么它每位数都加32。所以简单的回答是,当你把单个引用的空间当作空间字符时,在java <代码>空间字符(‘’’)/Code >中有32个Unicode值,这就是为什么它每增加一个数字就有32个。
public static void main(String[] args)
    {
        int[] a;
        a=new int[10];
        Scanner sc =new Scanner(System.in);
        for(int i=0;i<10;i++)
        {
            a[i]=sc.nextInt();  
        }
        for(int e:a)
        {
            System.out.print(e+" ");
        }
    }