02.第五章:循环

注意:在循环控制中 , 不要使用浮点值来比较值是否相等 。 因为浮点值都是某些值的近似值 , 使用它们可能导致不精确的循环次数和不准确的结果 。

变量 item 从 1 开始,每执行一次循环体就减去 0.1 。当 item 变为 0 时循环应该终止。 但是,因为浮点數在算术上是近似的,所以不能确保 item 会变成真正的 0。从表面上看 ,这个循环似乎没问題 , 但实际上它是一个无限描环。

  • 1.求最大公约数(5.8.3)

方案:找到比最小的数小1的数d,从d开始往1走,找到第一个能够被两个整数同时整除的数就是最大公约数。

Scanner input=new Scanner(System.in);
 System.out.print("输入第一个数");
 int number1=input.nextInt();
 System.out.print("输入第二个数");
 int number2=input.nextInt();
 int d=(number1<number2)?number1:number2;
 int max=1;
 while (d>1){
     if(number1%d==0&number2%d==0) {
         max = d;
         break;
     }
     d--;
 }
 System.out.println("最大公约数:"+max);

  • 2.十进制转换为十六进制
public class 练习4_10进制数转换为16进制数 {
    public static void main(String[] args){
        System.out.print("请输入十进制数:");
        Scanner input=new Scanner(System.in);
        int decimal=input.nextInt();
        int in=decimal;
        String hex="";
        while (decimal!=0){
            int hexValue=decimal%16;
            char hexch= (hexValue>=0&&hexValue<=9)?(char)(hexValue+'0'):(char)(hexValue-10+'A');
            hex=hexch+hex;
            decimal=decimal/16;
        }
        System.out.println(in+"的十六进制为:"+hex);
    }
}
  • 3.判断回文串
    如果一个字符串从前往后 , 以及从后往前是一样的 , 那么它就是一个回文 。 例如 ,“ mom ” 、 “ dad ” , 以及 “ noon ” , 都是回文 。
    方案:左右分别定义两个变量i,j。i<j循环判断头和尾是否相等
public class 练习5_判断回文串 {
     public static void main(String[] args){
        System.out.print("输入字符串:");
        Scanner input =new Scanner(System.in);
        String inString=input.nextLine();
        boolean isPail=true;
        for(int low=0,high=inString.length()-1;low<high;low++,high--){
            if(inString.charAt(low)!=inString.charAt(high)){
                isPail=false;
                break;
            }
        }
        if(isPail)
            System.out.println(inString+"是回文串");
        else
            System.out.println(inString+"不是回文串");

    }
}
  • 4..显示素数
    分 5 行显示前 50 个素数 , 每行包含10 个数字 。
    提示:如果一个数不是素数是合数,那么一定可以由两个自然数相乘得到,其中一个大于或等于它的平方根,一个小于或等于它的平方根.并且成对出现.
public class 练习6_判断素数 {
   public static void main(String[] args){
       final int MAX_COUNT=50;
       final int MAX_COUNT_LINE=10;
       int suCount=0;
       int number=2;

       while(suCount<MAX_COUNT){
           boolean isSu=true;
           for(int i=2;i<=Math.sqrt(number);i++){
               if(number%i==0) {
                   isSu = false;
                   break;
               }
           }
           if(isSu) {
               suCount++;
               if (suCount % MAX_COUNT_LINE == 0)
                   System.out.println(number);
               else
                   System.out.print(number + " ");
           }
           number++;

       }
   }
}
  • 5.分解因子

编写程序 , 读入一个整数 , 然后以升序显示它的所有最小因子 。 例如 ,若输人的整数是 120 , 那么输出就应该是 : 2 , 2 , 2 , 3 , 5 。
方案:将num从2开始除直到找到能被整除的因子,就是第一个因子。
num=num/2 再从2开始除,找到被整除的就是第二个因子
直到num值<2。

public class 课后text3 {
    public static void main(String[] args){
        System.out.print("请输入数字:");
        Scanner input =new Scanner(System.in);
        int num=input.nextInt();
        int k=2;
        while (k<=num){
            if(num%k==0){
                System.out.print(k+" ");
                num=num/k;
                k=2;
                continue;
            }
            k++;
        }
    }
}
  • 6.显示闰年

编写程序 , 显示从101到 2100 期间所有的闰年 , 每行显示10个 。 数字之间用一个
空格字符隔开 , 同时显示这期间闰年的数目 。
注:闰年的判断条件能整除4&&不能整除100,或能整除400

public class 课后text5 {
    public static void main(String[] args){
        int count=0;
        for (int i=101;i<=2100;i++){
            if((i%4==0&&i%100!=0)||i%400==0){
                count++;
                if(count%10==0) System.out.println(i);
                else System.out.print(i+" ");
            }
        }
    }
}
  • 7.显示每月第一天是星期几

编写程序 , 提示用户输人年份和代表该年第一天是星期几的数字 ,然后在控制台上显示该年每月第一天的星期 。
例如 , 如果用户输人的年份是 2013 和代表 2013年 1 月1日为星期二的 2 ,
程序应该显示如下输出 :
January 1 , 2013 is Tuesday
December 1 , 2013 is Sunday

public class 课后text6 {
    public static void main(String[] args){
        System.out.println("Enter year and day");
        Scanner input=new Scanner(System.in);
        int year=input.nextInt();
        int firstday=input.nextInt();
        int monthOfday=0;
        for(int month=1;month<=12;month++){
            switch (month){
                case 1:System.out.print("January 1,"+year+" is ");monthOfday=31;break;
                case 2:System.out.print("Febrary 1,"+year+" is ");monthOfday=((year%4==0&&year%100!=0)||year%400==0)?29:28;break;
                case 3:System.out.print("March 1,"+year+" is ");monthOfday=31;break;
                case 4:System.out.print("April 1,"+year+" is ");monthOfday=30;break;
                case 5:System.out.print("May 1,"+year+" is ");monthOfday=31;break;
                case 6:System.out.print("June 1,"+year+" is ");monthOfday=30;break;
                case 7:System.out.print("July 1,"+year+" is ");monthOfday=31;break;
                case 8:System.out.print("Augest,"+year+" is ");monthOfday=31;break;
                case 9:System.out.print("september,"+year+" is ");monthOfday=30;break;
                case 10:System.out.print("October,"+year+" is ");monthOfday=31;break;
                case 11:System.out.print("November,"+year+" is ");monthOfday=30;break;
                case 12:System.out.print("December,"+year+" is ");monthOfday=31;break;
            }
            switch (firstday){
                case 0:System.out.println("Sunday");break;
                case 1:System.out.println("monday");break;
                case 2:System.out.println("Tuesday");break;
                case 3:System.out.println("wednsday");break;
                case 4:System.out.println("Thusday");break;
                case 5:System.out.println("Friday");break;
                case 6:System.out.println("Satuday");break;
            }
            firstday=(firstday+monthOfday)%7;
        }
    }
}
  • 8.完全数

如果一个正整数等于除它本身之外其他所有除数之和,就称之为完全数。 例如 : 6 是第一个完全数 , 因为 6 =1 + 2 + 3 。 下一个完全数是 28 =14 + 7 + 4 + 2 + 1
10 000 以下的完全数有四个 ,编写程序 , 找出这四个完全数。

public class 课后text7 {
    public static void main(String[] args){
        for(int number=6;number<=10000;number++){
            int sum=0;
            for(int divisor=number-1;divisor>=1;divisor--){
                if(number%divisor==0){
                    sum=sum+divisor;
                }
            }
            if(sum==number){
                System.out.println(number);
            }
        }
    }
}
  • 9.十进制转换为二进制
public class 课后text9 {
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("请输入十进制数:");
        int digit=input.nextInt();
        String hex="";
        while (digit!=0){
            hex=digit%2+hex;
            digit=digit/2;
        }
        System.out.println("16进制为:"+hex);

    }
}
  • 10. 十进制转换为八进制
public class 课后text10 {
    public static void main(String[] args){
        System.out.print("请输入十进制数:");
        Scanner input=new Scanner(System.in);
        int digit=input.nextInt();
        String octal="";
        while (digit!=0){
            octal=digit%8+octal;
            digit=digit/8;
        }
        System.out.println("八进制为"+octal);
    }
}
  • 11.统计最大数出现的次数,输入以0结束

输入:3 5 2 5 5 5 0
输出:最大数5出现4次

public class 课后text11 {
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("请输入:");
        int num=input.nextInt();
        int max=0;
        int count=0;
        while (num!=0){
            if(num>max)
            {
                max=num;
                count=1;
                num=input.nextInt();
                continue;
            }
            else if (num==max) {
                count++;
                num=input.nextInt();
            }
            else {
                num=input.nextInt();
            }

        }
        System.out.println("最大数为:"+max+" 出现次数:"+count);
    }
  • 12.字符串的逆序

Enter a string : ABCD
The reversed string is DCBA

public class 课后text13 {
    public static void main(String[] args){
        System.out.print("Enter a string:");
        Scanner input=new Scanner(System.in);
        String s=input.next();
        String reverString="";
        for(int i=s.length()-1;i>=0;i--){
            reverString=reverString+s.charAt(i);
        }
        System.out.println(reverString);
    }
}
  • 13.最长共同前缀
public class 课后text17 {
    public  static void main(String[] args){
        Scanner input=new Scanner(System.in);
        System.out.print("Enter the first string:");
        String s1=input.nextLine();
        System.out.print("Enter the second string:");
        String s2=input.nextLine();
        int length=s1.length()<s2.length()?s1.length():s2.length();
        String result="";
        for(int i=0;i<length;i++){
          if(s1.charAt(i)==s2.charAt(i))
              result=result+s1.charAt(i);
          else
              break;
        }
        if(result.length()>0)
            System.out.println("The common prefix is "+result);
        else
            System.out.println(s1+"and"+s2+"have no common prefix");

    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,573评论 3 71
  • [Java编程题90道] 1.完成数组int[] a = {100,40, 60, 87, 34, 11, 56,...
    Mr_不靠谱_先森阅读 5,311评论 0 3
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,124评论 0 41
  • 今天学管组长开会,情到深处,总监说,今天是她在金太阳的第十年。 俗话说,十年磨一剑。 她从基层的电话营销员,到营销...
    梦鹿是一只猫阅读 133评论 0 0
  • 你包裹在我身上的皮被我一刀划破 血肉模糊 我听到你歇斯底里的叫喊 我们隔着一个心脏,一扇日光 你在白日 我在黑夜 ...
    阿得丫阅读 260评论 4 3