JAVA的循环结构以及简单操作

1、循环结构分为几种?

分为三种:for循环;while循环;do...while循环;

1.1for循环:适合次数比较固定的情况

for(初始化变量;条件语句;变量的变化)

{   代码    }

1.2while循环:

while(条件语句) //条件语句的结果为true的时候才会运行
  {
       代码; 
       变量值的改变;//也可以改变条件       
  }

1.3 do...while循环:先执行,在判断,所以do...while至少执行一次

do{
   代码; 
   变量值的改变;//也可以改变条件    
  }while(条件 );(分号要记住)

2下面就用这三种循环处理一些简单的循环
  2.1 从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 5*4*3*2*1

public class dom1 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("输入一个数字:");
        int Num=input.nextInt();
        for(int i=Num;i>1;i--)
        {
            System.out.print(Num+"*");
            Num--;
            if(Num==1)
            {
                System.out.print(Num);
            }
        }
    }
}

比如输入一个7,运行结果如下:

 总结:这题主要考你原样输出递减数字相乘,一开始我一直在计算值,怎么都算不对,后面想了好久,才发现只是要输出公式,有的时候不要把问题考虑的复杂。

2.2 从第一个月开始只有两只兔子两个月长大第三个月生了两只兔子, 生的小兔子两个月长大后每个月又生一对以此类推12个月后一共有多少只兔子

我用了两种算法,第一种:

public class dom3 {
    public static void main(String[] args) {
        int arr[] = new int[12];
        arr[0] = arr[1] = 1;
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        System.out.println("斐波那契数列的前12项如下所示:");
        for (int i = 0; i < arr.length; i++) {
            if (i % 5 == 0)
                System.out.println();
            System.out.print(arr[i] + "\t");
        }
    }
}

找出规律,前两个数相加等于第三个数,只需要在数组里面输入要输出的月份,那个月份的兔子对数就自动输出了

第二种方法:

public class dom6 {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        int a=1,b=1;
        System.out.println("请输入月份");
        int Yo=input.nextInt();
        for (int i=3;i<=Yo;i++)
        {
            int tep=a+b;
            a=b;
            b=tep;
        }
        System.out.println("兔子是"+b+"对");
    }
}

两种方法运行的结果一样的,输入12,运行时144,

2.3 任意输入一个整数(小于10位),输出它一共有多少位

public class dom1 {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        System.out.println("请输入一个10位数以内的数:");
        int Num=input.nextInt();
        int i=1;
        for (i=1;i<10;)
        {
            if(Num/10>0) {
                Num=Num/10;
                i++;
            }else
            {
                break;
            }

        }
        System.out.println("这个数是"+i+"位数");
    }

}

这里我们注意,首先考虑的是,怎么才能输出一个未知的数的位数,我用到了%10,每运行一步,就少一位的方法,想到这,其他的代码就简单了,运行结果如下

2.4  本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金

public class dom2 {
    public static void main(String[] args) {
        double Money=10000;
        double YL=0.003;
        int Year=5;
        for (int i=1;i<=5;i++)
        {
            Money=Money*(1+0.003);
        }
        System.out.println("五年后获得的本金是:"+Money+"元");
    }
}

 这题简单,算好利率,加上本金就可以了。

2.5   计算 1+2-3+4-5+6-7....+100的结果

public class dom3 {
    public static void main(String[] args) {
        int sum=1;
        for(int i=2;i<=100;i++)
        {
            if(i%2==0){
                sum=sum+i;
            }
            else
            {
                sum=sum-i;
            }
        }
        System.out.println("结果为:"+sum);
    }
}

 这里对于奇偶的区分用到了%2,切记是从2开始的;运行结果

2.6   你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数

   public static void main(String[] args) {

        Scanner input =new Scanner(System.in);
        System.out.println("输入多少个正整数");
        int Num=input.nextInt();
        int x=0,y=0;
        for(int i=1;i<=Num;i++)
        {
            System.out.println("输入"+i+"个数");
            int a=input.nextInt();
            if (a%2==0){
                x++;
            }if (a%2>0){
                y++;
        }if(a==-1){
            System.exit(-1);
        }
        }
        System.out.println("奇数的个数为:"+y+"\t"+"偶数的个数为:"+x);

    }

 这里一样用到了%2的方法,如果输入错误,强制中断程序,跳到最外层,用的是System.exit(int ),如果你用break,只是跳出当层代码,外面的仍然执行,结果是错的。

2.7 一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)

public class dom8 {
    public static void main(String[] args) {
        double x=0.00008;
        int i=0;
        while(x<=8848.13){

            x=2*x;
            i++;
        }
        System.out.println("对折第"+i+"次");
    }
}

这题也比较简单,抓住两点,1单位换算要对,初始值是0,好多同学定义初始值为1,多算了一次

2.8  计算1000以内所有不能被7整除的整数之和

public class dom6 {
    public static void main(String[] args) {
        int sum=0;
       for(int i=0;i<=1000;i++)
       {
           if(i%7!=0)
           {
               sum=sum+i;
           }

       }System.out.println("1000以内所有不能被7整除的整数之和为:"+sum);
    }
}

运行结果:

2.9  猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,  第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。  到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?

public class dom4
{
    public static void main(String[] args) {
       int d=10;
        int  x=1;
       for(d=10;d>1;d--)
       {

           x=(x+1)*2;
       }
        System.out.println("第一天摘了:"+x);
    }
}

这道题虽然字数挺多的,但是分析起来挺简单的,x=(x+1)*2,前一天和当天的数的关系式,记住只有九天,不然就多算了一次

2.10 求水仙花的值,比如153=1^3+5^3+3^3

public class dom8 {
    public static void main(String[] args) {
        int a=0,b=0,c=0,i;
        for (i=100;i<=999;i++){
            a=i/100;
            b=i/10%10;
            c=i%10;
            if(i==(a*a*a+b*b*b+c*c*c)){
                System.out.println("输出水仙花为:"+i);
            }
        }
    }

运行结果:

 总结:基本上各个类型的题目我差不多都梳理一遍了,有补充的欢迎和我说,主要是分析完题目中的要点,转换好就简单多了,灵活运用这三种循环结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yy64ll826

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值