java 的基础语句

对java基础语句的处理

本次的本次一共要实现若干个独立的功能,我写在了一个程序中。

下面是具体的代码:

import java.util.Scanner;
class ZuoYe{
    public static void main(String args[])
    {
        //1. 使用while循环,求1+11+111+1111+11111+111111。
        System.out.println("使用while循环,求      1+11+111+1111+11111+111111的值为:");
        int sum=0,int1=1;
        while(int1<=111111){ 
            sum+=int1;
            int1=int1*10+1;
        }
        System.out.println(sum);
        System.out.println();

        //2. 求10的阶乘  1x2x3x4…x10.
        int i;
        sum=1;
        for(i=1;i<=10;i++)
        sum*=i;
         System.out.println("10的阶乘  1x2x3x4…x10的值为:"+sum);
        System.out.println();

        //3. 求1+2+3……+1000的和,把和输出,计算每步结果中有多少个最后以8结尾的。
        int j=0;//计数器
        sum=0;
        for(i=1;i<1000;i++){
            sum+=i;
            if(sum%10==8)j++;
            }
        System.out.println("1+2+3……+1000的和为:"+sum);
        System.out.println("其中结尾为8的次数为"+j);
        System.out.println();

        //4. 计算1+2+3……,直到和大于500,程序退出,输出结果。
        i=1;
        sum=0;
       while(sum<=500){
           sum+=i;
           i++;
       }
       System.out.println("1+2+3……,直到和大于500值为:"+sum);
       System.out.println();

       /*
       5. 输出下列图案
    1
    1   2
    1   2   3
    1   2   3   4
    1   2   3   4   5
    1   2   3   4   5   6
    …   …   …   …   …   …   …
    1   …   …   …   …   …   …   …   …   10
       */
        System.out.println("输出下列图案:");
       for(i=1;i<=10;i++)
       { for(j=1;j<=i;j++)
           System.out.print(j+"\t");
           System.out.println();}
           System.out.println();


          // 6. 某人工资为6000/月,工资月增长率为0.5%,工作20年,共得到多少工资。
          double salary=6000.0d;//用来储存每个月的工资
          double sum1=0d;
            System.out.println("某人工资为6000/月,工资月增长率为0.5%,工作20年,共得到d的工资为:");
            for(i=1;i<=20*12;i++)
            {
                sum1+=salary;
                salary*=(1+0.005);
            }
            System.out.println(sum1);
            System.out.println();


            //7. 100到200之间,所有能被5或6整除,但不能同时整除的数,每行显示10个。
            System.out.println("100到200之间,所有能被5或6整除,但不能同时整除的数为:");
            j=0;//充当计数器
            for(i=100;i<=200;i++)
            {   if(j%10==0)
                System.out.println();
                if(!(i%5==0&&i%6==0))
                    if(i%5==0||i%6==0)
                    {System.out.print(i+"\t");
                     j++;
                }
            }
            System.out.print("");   


            //8.打印乘法口诀表。
            System.out.println("下面是乘法口诀:"); 
            for(i=1;i<10;i++)
            {
                for(j=1;j<=i;j++)
                {
                System.out.print(j+"x"+i+"="+i*j+"\t"); 
                }
                System.out.println();   
            }

            //9. 求1—100奇数的和。
            sum=0;
            System.out.print("求1—100奇数的和:");
            for(i=1;i<=100;i+=2)
            {
                sum+=i;
            }
            System.out.println(sum);
            System.out.println();

            //10. 求1+2+3……+1000的和,把和输出,并且计算什么时候和大于500。
            sum=0;
            for(i=1;i<1000;i++){
            sum+=i;
            if(sum<500)j=i;
            }
        System.out.println("1+2+3……+1000的和为:"+sum);
        System.out.println("当i的值为"+(j+1)+"时,和已经大于500");
        System.out.println();


        //11. 求1----100里,能被3整除或者能被4整除的数的和。
        sum=0;
        for(i=1;i<=100;i++)
            if(i%3==0||i%4==0)
                sum+=i;
            System.out.println("1----100里,能被3整除或者能被4整除的数的和为"+sum);
            System.out.println();

        //12. 求1----100里,能被6整除且能被9整除的数的和。
            sum=0;
        for(i=1;i<=100;i++)
            if(i%6==0&&i%9==0)
                sum+=i;
            System.out.println("1----100里,能被6整除且能被9整除的数的和为"+sum);
            System.out.println();

            //13. 计算半径为3的圆的面积,然后把面积的值输出。(注意所使用的数据类型)。
            double r=3.0d;
            System.out.println("径为3的圆的面积为:"+3.14*r*r);
            System.out.println();

            //14. 求1/2+1/3+1/4+1/5……1/10  的和。
            sum1=0;//储存double型数据
            for(i=2;i<10;i++)
            {
                sum1 +=(double)1/i;
            }
            System.out.println("1/2+1/3+1/4+1/5……1/10  的和为:"+sum1);
            System.out.println();

            /*
            15. double b = Math.random();
            b为一个0—1的随机数,要求生成一个0—10的随机整数。
            */
            double b = Math.random();
            System.out.println("生成一个0-10的随机数:"+b*10);
            System.out.println();

            /*
            16. 一筐鸡蛋:
            1个1个拿正好拿完。
            2个2个拿还剩1个。
            3个3个拿正好拿完。
            4个4个拿还剩1个。
            5个5个拿还剩4个。
            6个6个拿还剩3个。
            7个7个拿还剩5个。          
            8个8个拿还乘1个。          
            9个9个拿正好拿完。
            问筐里有多少鸡蛋?
            用程序写出计算过程!
            */
            for(i=9;;i+=9)
            if(i%4==1&&i%5==4&&i%6==3&&i%7==5&&i%8==1)break;
            System.out.println("框中的鸡蛋个数为:"+i);
    }
    }

其中我印象最深的是最后两题。
(1)其中的第15题仔细分析后我觉得我写的肯定不对,我的算法只试用于随机的浮点型数据。仔细思考后,我觉得最合理的算法应该是原数乘以1.1然后强制转换,利用去尾法来取整数。
(2)而最后一题在听完老师的讲解后,我觉得受益匪浅。如果按照题中给定的条件全部转化为判断表达式,需要运行很多次。但是经过分析,可以简化操作,减少循环次数。4个4个拿还剩1个,5个5个拿还剩4个说明末尾数是9。9个9个拿正好拿完说明是九的倍数。则每次的增量至少可以是90,则循环次数变为4。大大减少了循环次数!

你可能感兴趣的:(java)