在java的输出中,把双引号误写成单引号

今天在写代码的时候,犯了一个简单的错误:
即在java的输出中,将双引号写成了单引号,但没有发生编译错误。
代码如下:(出错行为第10行)

public class xiti3_5
{
     public static void main(String args[])
     {
          Fibonacci f=new Fibonacci();
          int result=0,i;
          for(i=0;i<10;i++)
          {
               result=f.jiSuan(i);
               System.out.print(result+" ");
          }
     }
}
class Fibonacci
{
      private int result;
      public int jiSuan(int n) 
      {
             if(n==0)
             {
                  result=0;
                  return result;
             }
             else if(n==1)
             {
                  result=1;
                  return result;
             }
             else
             {
                 result=jiSuan(n-1)+jiSuan(n-2);
                 return result;
             }
           
      }
}

输出结果:

32333334353740455366

正确输出:

0 1 1 2 3 5 8 13 21 34

看到运行结果的我是惊恐的!!
而事实上,只是把双引号写成了单引号,导致运行结果和正确答案大相径庭。再加上并没有发生编译错误,所以在找bug位置的时候,并没有格外注意输出本身的问题。
而发现错误了之后,发现其实错误的结果和正确的结果是有联系的:
1.错误结果除了该有的空格没有输出之外,还将每个值加上了32,而经过查阅ASCII码表,发现32正好是space(空格)的ASCII码值。
2.也就是说,出错行的“+”实现的不是字符串拼接,而是整型数值与字符‘ ’(空格)ASCII码值的相加。在语法上没有问题,因此才没有编译错误产生。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值