【参考答案】java基础练习:循环结构(while、do...while、for、break、continue、return直接跳出方法体)
while
while实现:输出比i(i=5)小的正整数
package com.qzcsbj; public class Test { public static void main(String[] args) { int i = 5; while (--i>0){ System.out.println(i); } } }
求1到100之间所有偶数的和
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <求1到100之间所有偶数的和> */ public class Test { public static void main(String[] args) { int total = 0; int m = 1; while(m <= 100){ if(m % 2 == 0){ total += m; } m++; } System.out.println(total); } }
循环提示用户输入一个非零整数,直接输入数字0为止,然后输出其中的最大值和最小值
package com.qzcsbj; import java.util.Scanner; /** * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入非零整数(0表示结束):"); int n = input.nextInt(); int max = n, min = n; while (n != 0) { System.out.print("请输入非零整数(0表示结束):"); n = input.nextInt(); if(n!=0){ if (n > max) { max = n; } if (n < min) { min = n; } } } System.out.println("最大值:"+max); System.out.println("最小值:"+min); } }
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int x = 0; int y = 0; while(true){ System.out.print("请输入:"); int b = scanner.nextInt(); if(b > 0){ x++; }else if(b < 0){ y++; }else{ break; } } System.out.println("正数: " + x); System.out.println("负数: " + y); } }
如果输入的是整数,输出是偶数还是奇数,然后结束;如果输入的不是整数,提示用户重新输入,直到输入整数
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { while (true){ Scanner sc = new Scanner(System.in); System.out.print("请输入整数:"); if (sc.hasNextInt()){ int num = sc.nextInt(); if (num%2==0){ System.out.println("你输入的是偶数"); }else{ System.out.println("你输入的是奇数"); } break; }else { System.out.println("输入有误"); } } } }
死循环
第二次、第三次、第n次循环hasNextInt()这个方法接收的都是你第一次输入的字符,所以只要第一次输错,就会直接死循环
package com.qzcsbj; import java.util.Scanner; /** * @description : <描述> */ public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true){ System.out.print("请输入整数:"); if (sc.hasNextInt()){ int num = sc.nextInt(); if (num%2==0){ System.out.println("你输入的是偶数"); }else{ System.out.println("你输入的是奇数"); } break; }else { System.out.println("输入有误"); } } } }
修改方案
package com.qzcsbj; import java.util.Scanner; /** * @description : <描述> */ public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = ""; while (true){ System.out.print("请输入整数:"); if (sc.hasNextInt()){ int num = sc.nextInt(); if (num%2==0){ System.out.println("你输入的是偶数"); }else{ System.out.println("你输入的是奇数"); } break; }else { System.out.println("输入有误"); s = sc.next(); } } } }
do while
下面输出结果是?说明原因
package com.qzcsbj; public class Test { public static void main(String[] args) { int i = 5; do { System.out.println(i); i--; }while (i>5); } }
先执行do里面的内容,再判断while里的条件
打印输出[0,200]之间所有能被7整除,但不能被4整除的所有整数,要求每行打印5个,并统计个数
package com.qzcsbj; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { int i = 0; int count = 0; do { if (i % 7 == 0 && i % 4 != 0) { count++; System.out.print(i + "\t"); if (count % 5 == 0) { System.out.println(); } } i++; } while (i <= 200); System.out.println("\n总个数:" + count); } }
for
求1到100之间所有偶数的和
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : */ public class Test { public static void main(String[] args) { int total = 0; for(int m=1;m <= 100;m++){ if(m % 2 == 0){ total += m; } } System.out.println(total); } }
循环输入五门课程的成绩,计算平均分
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); int sum = 0; for (int j = 1; j <= 5; j++) { System.out.print("请输入第" + j + "门课程的成绩:"); int score = input.nextInt(); sum += score; } double avg = sum / 5.0; System.out.println("平均分:" + avg); } }
任意输入一个整数,根据这个值输出加法表
package com.qzcsbj; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入任意一个整数:"); int num = input.nextInt(); for (int i = 0; i <= num; i++) { System.out.println(i + "+" + (num - i) + "=" + num); } } }
打印 1-100000之间的所有素数,并统计耗时,如果耗时大于200ms,就需要优化
(素数: 有且仅有两个正约数的整数. 即 2 ~ i-1 之间没有一个是其约数)
package com.qzcsbj; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { boolean flag = true; long begin = System.currentTimeMillis(); for(int i = 2; i <= 100000; i++){ flag = true; for(int j = 2; j <= Math.sqrt(i); j++){ if(i % j == 0){ flag = false; break; } } if(flag){ System.out.println(i); } } long end = System.currentTimeMillis(); System.out.println("time: " + (end - begin)); // 136 } }
break
将1-10之间的整数相加,当累加值大于20时停止相加,输出当前整数和累加值
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; if (sum > 20) { System.out.println("当前整数:" + i); break; } } System.out.println("累加值:" + sum); } }
continue
输出1到10之间所有的奇数
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { continue; } System.out.println(i); } } }
return
下面输出结果是?
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { System.out.println(test()); test2(); } public static int test(){ for (int i = 0; i < 5; i++) { System.out.println(i); if (i==1){ return i; // 跳出方法体 } } return 10; } public static void test2(){ for (int i = 0; i < 5; i++) { System.out.println(i); if (i==1){ return ; } } System.out.println("hello"); return; } }
双重for循环
实现输出九九乘法表
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + i * j+" "); } System.out.println(); } } }
某次技能大赛,共有3个班参加,每个班有4名学生参加,计算每个班级的平均分(只统计成绩≥80分的学生的平均分)
package com.qzcsbj; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); for (int i = 1; i <= 3; i++) { double sum = 0; int count = 0; for (int j = 1; j <= 4; j++) { System.out.print("请输入第" + i + "个班级第" + j + "名学生的成绩:"); int score = input.nextInt(); if (score < 80) { continue; } count++; sum += score; } double avg = sum / count; System.out.println("第" + i + "个班级的平均分为:" + avg); } } }
打印如下样式的直角三角形
思路:
第一种:递增加1 第二种:递增n*2-1 第三种:递减减1 第四种:递减n*2-1
实现
package com.qzcsbj; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入行数:"); int rows = input.nextInt(); for (int i = 1; i <= rows; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } System.out.println(); for (int i = 1; i <= rows; i++) { for (int j = 1; j <= i * 2 - 1; j++) { System.out.print("*"); } System.out.println(); } System.out.println(); for (int i = 1; i <= rows; i++) { for (int j = 1; j <= rows - i + 1; j++) { System.out.print("*"); } System.out.println(); } System.out.println(); for (int i = 1; i <= rows; i++) { for (int j = 1; j <= (rows - i + 1) * 2 - 1; j++) { System.out.print("*"); } System.out.println(); } System.out.println(); } }
打印等腰三角形
package com.qzcsbj; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入行数:"); int rows = input.nextInt(); for(int i=1;i<=rows;i++){ for(int k=1;k<=rows-i;k++){ System.out.print(" "); } for (int j = 1; j <= i * 2 - 1; j++) { System.out.print("*"); } System.out.println(); } } }
打印等边三角形
package com.qzcsbj; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入行数:"); int rows = input.nextInt(); for(int i=1;i<=rows;i++){ for(int k=1;k<=rows-i;k++){ System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("* "); } System.out.println(); } } }
输入带*字符串,把*左移输出,其他字母按原顺序输出,例如输入“as*c*gkl**o*p*h*”,输出*******ascgkloph
package com.qzcsbj.demo; import java.util.Arrays; import java.util.Scanner; /** * @公众号 : 全栈测试笔记 * @博客 : www.cnblogs.com/uncleyong * @微信 : ren168632201 * @描述 : <> */ public class Test { public static void main(String[] args) { System.out.print("请输入带*字符串:"); Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); System.out.println("移动前:" + str); char[] arr=str.toCharArray(); for (int i=0;i<arr.length-1;i++){ for (int j=1;j<=arr.length-1-i;j++){ if (arr[j]=='*' && arr[j-1]!='*'){ char temp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = temp; } } System.out.println("第"+ (i+1) +"轮冒泡:" + Arrays.toString(arr)); } System.out.println(Arrays.toString(arr)); String s = ""; for (int i=0;i<arr.length;i++){ s+=arr[i]; } System.out.println("移动后:" + s); } }
【java百题计划汇总】
详见:https://www.cnblogs.com/uncleyong/p/15828510.html
原文会持续更新,原文地址:https://www.cnblogs.com/uncleyong/p/17043949.html
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!