黑马程序员技术交流社区

标题: 关于九九乘法表的对齐问题 [打印本页]

作者: 偏執旳、靑春    时间: 2013-2-20 14:20
标题: 关于九九乘法表的对齐问题
本帖最后由 偏執旳、靑春 于 2013-2-22 10:45 编辑

1*1=1
1*2=2  2*2=4
1*3=3  2*3=3  3*3=9
for(int i=1;i<=9;i++)
{
        for(int y=1;y<=x;y++)
        {
              sop(y+"*"+x+"="+"y*x"+"\t");
       }
       sop();

}

红线部分 8和10位置占位符不一样,怎么后面能够排齐啊,即使用了制表符,也应该对不齐啊
如2*4=8    3*4=12
   2*5=10    3*5=15
怎么解释这个问题啊?

day05.jpg (53.1 KB, 下载次数: 43)

day05.jpg

作者: 曹春贵    时间: 2013-2-20 14:27
{:soso_e143:}没理解,我看着不是很齐吗
作者: 黑马刘杰    时间: 2013-2-20 14:32
本帖最后由 黑马刘杰 于 2013-2-20 14:35 编辑

复制代码
1*1=1        
1*2=2        2*2=4        
1*3=3        2*3=6        3*3=9        
1*4=4        2*4=8        3*4=12        4*4=16        
1*5=5        2*5=10        3*5=15        4*5=20        5*5=25        
1*6=6        2*6=12        3*6=18        4*6=24        5*6=30        6*6=36        
1*7=7        2*7=14        3*7=21        4*7=28        5*7=35        6*7=42        7*7=49        
1*8=8        2*8=16        3*8=24        4*8=32        5*8=40        6*8=48        7*8=56        8*8=64        
1*9=9        2*9=18        3*9=27        4*9=36        5*9=45        6*9=54        7*9=63        8*9=72        9*9=81        
      
这儿使用了制表符才是这样的。
一个制表符占8个字符,而且字符串默认靠左对齐,上面的九九乘法表的结果都没有超过8个字符,下一个字符串就从下一个制表符开始出显示,所以就显示成这样了。
作者: 偏執旳、靑春    时间: 2013-2-20 14:35
黑马刘杰 发表于 2013-2-20 14:32
1*1=1       
1*2=2        2*2=4       
1*3=3        2*3=6        3*3=9       

你看看你的第三列对齐了么????毕老师可是对齐了,用了制表符应该没对齐啊!怎么对齐的
作者: 偏執旳、靑春    时间: 2013-2-20 14:35
曹春贵 发表于 2013-2-20 14:27
没理解,我看着不是很齐吗

你还是先把视频看完吧!我在整理笔记 想问题
作者: 黑马刘杰    时间: 2013-2-20 14:36
偏執旳、靑春 发表于 2013-2-20 14:35
你看看你的第三列对齐了么????毕老师可是对齐了,用了制表符应该没对齐啊!怎么对齐的 ...

在网页上对不齐,在程序输出结果中时对齐了的
作者: 江华    时间: 2013-2-20 14:38
你这对代码有问题,等下,我给你i写一个!
作者: 罗正荣    时间: 2013-2-20 14:48
"\t"相当于制表符,但是又和直接按Tab健有点区别。看下面这个小程序吧
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println("\t"+"HI");

  6.         System.out.println("HI"+"\t"+"HI");

  7.         System.out.println("        "+"HI");//此处的HI前有8个空格
  8.         }
  9.         
  10. }
复制代码
输出的结果是:
           HI
HI        HI
           HI
从结果可以到得
如果"\t"之前无输出的数据,那直接横向跳8个空格,如果"\t"前有数据,那么连同前面的数据在内加上"\t"产生的空格跳越也是8个
当然我这里回答的不是8个空格,但是你打印的时候是8个空格的。
所以2*4=8      3*4=12
      2*5=10    3*5=15
因为8+上3前面的空格占8个字节
10+上3前面的空格也要占8个字节而10占了2个字节只能是空格少一个了

作者: 江华    时间: 2013-2-20 14:55
/*
分析:
1、        根据九九乘法表,我们但看第一列发现如下规律

1*1=1
1*2=2
1*3=3
...
每行第一个都是从1开始
for(int lie=1;lie<=9;lie++)
{
//        打印一行信息;
//        打印换行符, 是下一行从头开始
System.out.println();
}
2、在横向看

1*1=1
1*2=2        2*2=4
1*3=3        2*3=6        3*3=9
每行第一个数字是列数,第二数字是行数,并且最大值等于列数

for(int hang=1;hang<=lie;hang++)
{
        //打印每一个组信息,并且加上Tab制表符。
        system.out.print(lie+"*"+hang+"="+lie*hang+"\t");
}

至此,分析完成组件代码!如下
*/
class  ChengFaBiao
{
        public static void main(String[] args)
        {

                for(int lie=1;lie<=9;lie++)
                {
                        //        打印一行信息;
                        for(int hang=1;hang<=lie;hang++)
                        {
                                //打印每一个组信息,并且加上Tab制表符。
                                System.out.print(lie+"*"+hang+"="+lie*hang+"\t");
                        }
                        //        打印换行符, 是下一行从头开始
                        System.out.println();
                }               
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2