JAVA基础必备(四)——循环体(一)

来源:互联网 发布:更新linux swap 编辑:程序博客网 时间:2024/05/05 06:37

这个循环(一)主要讲解下如何利用循环打印图形,下面是正文——

1.通过键盘输入数据:

a)import java.util.Scanner包;
b)在主函数中Scanner s = new Scanner(System.in);
c)s.nextInt(),or  s.nextDouble();

2.选择结构:

a)if(条件){//语句,如果只有一个语句{}可省略}
b)if(){}else if(){}...
c)switch(变量){case...常量 default:}注意:1.break关键字如果没有break,匹配上一个之后会默认往后匹配直到有break为止;break switch{}继续后面的语句;2.default语句最多只能出现一次,可以没有。可以出现任何的位置(和case并列即可)其作用相当于else。。。3.switch小括号中的变量类型,只能是如下类型:byte、short、int、char、枚举(不是基本数据类型)

3.循环结构:

for(表达式1;表达式2;表达式3)
  {
    //循环体
  }
break  跳出for循环 --->for结构结束
   contiune 结束本次循环进行下一次---》去第三个表达式;
练习:形成for循环思想
package xunhuanti;import java.util.Scanner;public class Shuru {private  int s,a,b,c;private int sum = 0;private  Scanner sc;/** * @param args * 输入一个年龄,如果大于60则输出可以免费进入 */   private  void age(){   sc = new Scanner(System.in);   System.out.println("请输入年龄:");   s = sc.nextInt();   while(s<=60){   System.out.println("年龄不够免费条件!请重新输入:");   s = sc.nextInt();   }   System.out.println("可以免费进入");       }   /**    * 通过键盘输入三个数字,找出其中的最大值    */   private  void threeMax(){   sc = new Scanner(System.in);   System.out.println("请输入第一个数字:");   a = sc.nextInt();   System.out.println("请输入第二个数字:");   b = sc.nextInt();   System.out.println("请输入第三个数字:");   c = sc.nextInt();   if(a>b){   s = b;   b = a;   a = s;   }   if(a>c){   s = c;   c = a;   a = s;   }   if(b>c){   s = c;   c = b;   b = s;   }   System.out.println(a+"/"+b+"/"+c);   }   /**    * 通过键盘输入年月日,     计算该日期在这一年已经过了多少天    */   public   void day(){   sc = new Scanner(System.in);   System.out.println("请输入年:");   a = sc.nextInt();   System.out.println("请输入月:");   b = sc.nextInt();   System.out.println("请输入日:");   c = sc.nextInt();//   过了多少天其实本质就是叠加和//   那么以月为变量进行统计,当月不算,过去的月数天数+当月的天数   switch(b-1){//   若b当月为12月份,则b-1=11月份   case 11:   sum += 30;   case 10:   sum += 31;   case 9:   sum += 30;   case 8:   sum += 31;   case 7:   sum += 31;   case 6:   sum += 30;   case 5:   sum += 31;   case 4:   sum += 30;   case 3:   sum += 31;   case 2:   if(a%4==0&&a%100!=0||a%400==0){   sum += 29;   }else sum += 28;   case 1:   sum += 31;   }   sum += c;   System.out.println("这一年已经过了"+sum+"天!");   if(a%4==0&&a%100!=0||a%400==0){   s = 366;   }else s = 365;   System.out.print("这一年还剩下"+(s-sum)+"天");   }   /**    * 读入一个三位数,计算其各位数字之和。例如:123各位数字之和为6    */   private  void threeNumSum_print(){   System.out.println("计算三位数各位数字之和,请输入要计算的三位数:");   sc = new Scanner(System.in);   s = sc.nextInt();   threeNumSum();   }   private  void threeNumSum(){//   既然要输入三位数,那么就不让输入超过三位数   if(s<100||s>999){   System.out.println("输入有误,请输入三位数:");   s = sc.nextInt();   threeNumSum();   }else {   int one = s%10;//个位数   int two = s/10%10;//十位数   int three = s/100;//百位数       s = one + two + three;       System.out.println("个位="+one+"十位="+two+"百位="+three+"该数个位之和:"+s);       System.out.println("请继续输入:");       s = sc.nextInt();       threeNumSum();   }   }   /**    * 1-100之和    */   private void sum100(){   for(int i=1;i<=100;i++){   sum += i;   }   System.out.println("1-100和="+sum);   }/** * 求1-100偶数之和, */   private void oushu(){   for(int i=1;i<=100;i++){  if( i%2==0){  sum += i;  }   }   System.out.println("偶数和:"+sum);   for(int i=2;i<=100;i+=2){   s += i;   }   System.out.println("另种方法的偶数和:"+s);   }   /**    * 求1到100之间能被3整数但不能被5整除的所有数字之和    * @param args    */   private void intThreeFive(){   for(int i=1;i<=100;i++){  if (i%3==0&&i%5!=0){  System.out.println(i);  sum += i;  }   }   System.out.println("sum="+sum);   }   /**    * 求1!+2!+3!+4!+...+10!            n! = (n-1)!*n  最好用long型        10! = 1*2*3*4*..*10            第一循环 要求得1的阶乘 并累计为和            第二循环 得到2的阶乘  并累计为和             第三循环 得到3的阶乘  并累计为和            ...             第十循环 得到10的阶乘  并累计为和    * @param args    */   private void jieCeng(){   s= 1;   for(int i = 1;i<=10;i++){   s *= i;   sum += s;   }   System.out.println("10!sum="+sum);   }   /**    * 通过键盘输入一个数字,打印其所有因子      并对所有因子求和(因子不包含自己)      因子就是能被这个数整除的数字      10的因子有 1 2 5     * @param args    */   private void yinZi(){   sc = new Scanner(System.in);   System.out.println("请输入:");   s = sc.nextInt();//   一个数除以大于自己一半的数字肯定会有余数的,那么他的因子最大也就是s/2了,自然也就不包括自己了   for(int i = 1;i<=s/2;i++){   if(s%i==0){   sum += i;   System.out.println(s+"的因子为"+"("+i+")");   }   }  System.out.println("因子和="+sum);   }/** * 通过键盘输入一个数字,判断该数字是否为素数       指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数。       拿到一个数字后就从2开始除一直除到n-1如果都有余数,       说明该数字是素数  只要除到n/2即可 * @param args */   private void suNum(){   sc = new Scanner(System.in);   System.out.println("请输入:");   s = sc.nextInt();          for(int i=s-1;i>1;i--){         if(s%i!=0){         System.out.println(s+"为素数");         }else System.out.println(s+"不为素数");          }   }   /**    * 打印100-1000所有的素数    * @param args    */   private void printSuNum(){   int j;   for(int i=100;i<=1000;i++){//   我拿这个数一直除以2,除到这个数的一半就可以了,看效果   for( j=2;j<=i/2;j++){   if(i%j==0){   break;   }  }   System.out.println(j);   if(j>i/2){   System.out.println(i);   }   }   }   /**    *  * ** *** **** *****通过键盘输入行数 打印图形有行有列,就是两层循环 外层循环控制行,内层循环控制列 打印九九乘法表!    * @param args    */   private void jiujiu(){   for(int i = 1;i<=9;i++){   for(int j = 1;j<=i;j++){   System.out.print(j+"*"+i+"\t\t");   }   System.out.println();   }   }   /** ******** *******  ******   *****    ****     ***      **       *   打印图形的习惯--》上面宽外层循环从大开始每行都有若干个空格和若干个星号组成,需要有一个循环来控制空格,还要有一个循环控制星号内层循环的控制一定和外层循环是相关的    * @param args    */   private void bigTu(){   for(int i = 10;i>=1;i--){//控制行   for(int j=1;j<=10-i;j++){//控制列   System.out.print(" ");   }   for(int k=1;k<=i;k++){   System.out.print("*");   }   System.out.println();   }   }/*     *   ***  ************   ********* *******  *****   ***     **/   private void duichen(){   for(int i = 1;i<=5;i++){//  先打印上半部分   for(int j=1;j<=5-i;j++){ //控制空格的输出,刨除需要输出*的位置   System.out.print(" ");   }   for(int k = 1;k<=2*i-1;k++){//什么位置需要输出*呢?   System.out.print("*");   }   System.out.println();   }   for(int m=4;m>=1;m--){   for(int g=1;g<=5-m;g++){   System.out.print(" ");   }   for(int n=1;n<=2*m-1;n++){   System.out.print("*");   }   System.out.println();   }   }   /**  A   BBB CCCCCDDDDDDDEEEEEEEEE    * @param args    */   private void ziMuTa(){//  上面窄,外层循环从小开始,那么需要1个循环控制空格,再需要一个循环控制字母;   for(int i=1;i<=5;i++){//   首先控制空格,空格是由大到小,那么就从大开始循环打印空格   for(int j=9-i;j>=1;j--){   System.out.print("  ");        }//   接下来字母是从小到大的排列,那么就从小开始循环      for(int m=1;m<=2*i-1;m++){      System.out.printf(" %c",i+64);      }   System.out.println();   }   }   /**    *     * @param args  1    121   12321  1234321 12345432112345654321    */   private void numTa(){   int c = 0;//   问题分析:1.外层循环为6层,2.然后对每行的空格进行控制输出;3.同时再对数字进行控制   for(int i = 1;i<=6;i++){                 for(int j=1;j<=6-i;j++){                 System.out.print("  ");                 }    for(int k = 1;k<=2*i-1;k++){//    那么肯定跟k有关系,k是什么,k是数字de循环,来看一下层数,与每行数字个数和数字本身之间的关系,很好的找出了规律    /*for(int m=k;m>i;m--){ //对数字本身关系做个循环找规律    System.out.print(k-i);    }*/    if(k>i){    System.out.print(2*i-k);    }else System.out.print(k);    }        System.out.println();   }   }   public static void main(String[] args) {// TODO Auto-generated method stubShuru shuru = new Shuru();//       shuru.age();//shuru.threeMax();//        shuru.day();//shuru.threeNumSum_print();//shuru.sum100();//shuru.oushu();//shuru.intThreeFive();//shuru.jieCeng();//shuru.yinZi();//shuru.suNum();//shuru.printSuNum();//shuru.jiujiu();//shuru.bigTu();//shuru.duichen();//shuru.ziMuTa();shuru.numTa();}}


0 0