提问人:Avijit Mandal 提问时间:8/17/2020 更新时间:8/17/2020 访问量:68
解释为什么会出现错误的输出?
Explain why the Wrong Output Happened?
问:
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+' ');
}
}
}
输入:1 2 3 4 5 6 7 8 9 10
输出:33343536373839404142
它意味着每个数字增加了 32
答:
只需尝试以下代码即可。
当您在 for 循环内部打印 sout 时,它打印的是 number 和 Space( ' '
) 的总和。空间的 ASCII 值为 32,因此您可以看到附加值为 32 的每个元素。
对于ASCII或Unicode,您可以参考此链接,它将为您提供帮助。
只需输入类似 System.out.print(new Integer(' '));
,它将打印 32。
如果您只想添加空格,请使用双引号。System.out.print(e+“ ”);
.
单引号被视为与 Integer 一起添加的字符和字符将用它们的 ASCII 代码进行总结。
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+" ");
}
}
评论
System.out.print(e+' ');
char
String
char
space character (' ')
简单地说,' ' 是 ASCII 中的一个字符,它的值是 32。所以,据我所知,你可能希望它直接打印,这样你就可以用“”替换''。永远记住,单引号用于字符,双引号用于字符串。
对于您的答案,您可以这样做:System.out.print(e+" ");
取而代之的是:System.out.print(e+' ');
简而言之,要修复您的程序,您需要使用(带双引号)而不是 ." "
' '
问题是运算符在 Java 中有两种不同的含义。+
- 如果任一个操作数是 ,则表示“将这两个操作数连接在一起”。如果另一个操作数不是 ,那么它就必须以某种方式进行转换,并且有一些关于如何执行此操作的规则。
String
+
String
- 如果两个操作数都不是 ,则表示“将这两个操作数相加”——也就是说,它们被视为数字。它们可以添加为值、值、值或值,具体取决于数据类型。但如果它们是 ,或者 ,它们将被视为 。这称为二进制数字提升,并在 Java 语言规范中有详细解释。
String
+
double
float
long
int
short
byte
char
int
现在在 Java 中,单引号用于分隔文字。所以当你写 时,你是在 .这是加法 - 将 视为 ,而操作数则作为数字相加。对应的数字是 32,因为这是 Java 使用的字符编码中的数值,类似于 UTF-16。与此页面上的其他一些答案相反,它不是 ASCII。char
e + ' '
int
char
char
int
双引号用于分隔文本。所以如果你写 ,操作数是 an 和 a 。这意味着您不再添加任何内容,而是连接。转换为 first,然后连接为 ,这将为您提供预期的结果。String
e + " "
int
String
int
String
" "
评论
" "
' '
char