bili1483
2011-11-26 20:17
浏览 236
已采纳

"\t"打错了成'\t',结果求解释?

本人半桶水,我刚才在做现实100质数的程序:
[code="java"]public class test1
{
public static boolean isPrimeNumber(int n)
{
for(int i=2;i<=Math.sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}
return true;
}
public static void main(String[] arges)
{
final int s=100;
for(int i=2;i<=s;i++)
{
if(isPrimeNumber(i))
{
System.out.print(i+"\t");
}
}
}
}[/code]
21行那里,第一次写的时候把"\t"写成'\t',能编译,结果出来是一大串数字,[img]http://dl.iteye.com/upload/attachment/595892/0971afdd-fc97-33c7-a3c4-a0580bc9e17c.jpg[/img]而且保留'\t'重新编译后再执行的话那串结果会不一样的。
我想知道'\t'这东西是啥,为什么出现这个结果?(是内存方面出错?不知道是不是)
还有就是我在网上搜java '\t' "\t"或者java '\t'或者java "\t",出来的都不是我想知道的,顺便问一下如果遇到这类问题自己怎么搜答案?求经验分享

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • jiangguangxian 2011-11-26 21:32
    已采纳

    [code="java"]
    public class test1

    {

    public static boolean isPrimeNumber(int n)

    {

    for(int i=2;i<=Math.sqrt(n);i++)

    {

    if(n%i==0)

    {

    return false;

    }

    }

    return true;

    }

    public static void main(String[] arges)

    {

    final int s=100;

    for(int i=2;i<=s;i++)

    {

    if(isPrimeNumber(i))

    {

    System.out.print(i+9);

    }

    }

    }

    }

    [/code]
    试试这段程序是不是和你的结果一致啊,如果是,那么你可以想象一下 '\t' 这个字符的整数值是9, 而9就是'\t'这个字符的ascii码,而这种转换就是自动转型。

    已采纳该答案
    打赏 评论
  • yanjinke 2011-11-26 21:13

    java中单引号引起来的单个字符是char类型的,双引号 表示字符串,为一个或多个字符
    java中可以直接把char类型转化成int的,相当于是ASCII码的值,\t 对应的ASCII码的值是9, System.out.print(i+'\t'); 是调用了方法
    PrintStream类中的 public void println(int x), 相当于 质数的值加上9所以就出现你贴出来的那一串了,[quote]而且保留'\t'重新编译后再执行的话那串结果会不一样的[/quote] 这是不可能的,除非你的值有改变了, \t对应的ASCII码是不会变的;
    后来代码改为System.out.print(i+"\t"); 相当于是 String.valueOf(i) + 制表符,是字符串拼接,是调用了PrintStream类中的 public void println(String s);

    这个问题,你可以看看调用print的那个重载方法,然后再去找下原因,就容易多了,也比较有方向了;

    像这种问题,可以查找的关键字有,\t对应的ASCII码、java 单引号,双引号的区别;

    打赏 评论
  • 爱上一条鱼 2011-11-26 21:16

    [quote]而且保留'\t'重新编译后再执行的话那串结果会不一样的。 [/quote]
    刚试了下 每次输出都是一样的 没有出现不一样的情况

    其实问题很简单的 '\t'在java里的的字符转成int 就是 9, 所以原来2 3 5。。。就变成了11 12 14.。。。。。

    [code="java"]public class test
    {
    public static void main(String[] arges)
    {
    System.out.println((int)'\t');
    System.out.println("test"+(char)9+"test");
    }
    }[/code]

    打赏 评论

相关推荐 更多相似问题