循环:通过某个条件,重复的执行一段逻辑代码。
附:Java循环基础知识框架思维导图
循环练习题
- 输入一个数字,然后分解质因数,例如:输入20,输出:20=2x2x5
- 案例:使用循环输出菱形
- 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字,例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
- 编写一个程序,根据输入某个班级学员的成绩,计算该班级学员的平均成绩,
班级的人数要求用户输入,根据输入的人数,分别录入学员的成绩,计算该
班级学员的平均成绩,并显示计算结果。 - 输入两个数,求两个数的最小公倍数
- 五位数中,对称的数称为回文数,找出所有的回文数。如12321(***)
1.输入一个数字,然后分解质因数,例如:输入20,输出:20=2x2x5**
//1. 输入一个数字,然后分解质因数,例如:输入20,输出:20=2x2x5
import java.util.Scanner;
public class Test1{
public static void main(String[] args){
System.out.println("请输入一个要分解的正整数:");
int n = new Scanner(System.in).nextInt();
System.out.print(n+"=");//输出n=
for(int i=2;i<=n;i++){ //遍历寻找除数
while(n%i==0&&n!=i){//能够被整除并且产生的除数不等于被除数,还能再进行运算
n/=i;
System.out.print(i+"*");
}
if(n==i){//若不加此判断语句则输出为20=2x2x,需要输出最后位数
System.out.print(n);
break;
}
}
}
}
2.案例:使用循环输出菱形
//2.案例:使用循环输出菱形
import java.util.Scanner;
public class Test2{
public static void main(String[] args){
System.out.println("请输入一个整数n:");
int n = new Scanner(System.in).nextInt();
//菱形上半部分
for(int i =1;i<=n;i++){ //换行
for(int w=1;w<=n-i;w++){//输出的空格数,总行数-当前的行数
System.out.print(" ");
}
for(int b=1;b<=2*i-1;b++){ //输出的*等于当前行数的两倍-1
System.out.print("*");
}
System.out.println();
}
//菱形下半部分
for(int j =n-1;j>=1;j--){//-1去掉重复的一行
for(int w1=n-j;w1>=1;w1--){
System.out.print(" ");
}
for(int b1=2*j-1;b1>=1;b1--){
System.out.print("*");
}
System.out.println();
}
}
}
3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
/*3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。*/
//注意12阶乘的sum超过int类型范围
import java.util.Scanner;
public class Test3{
public static void main(String[] args){
System.out.println("请输入一个整数表示位数:");
int n = new Scanner(System.in).nextInt();
System.out.println("请输入一个整数表示每一位的数是:");
int a = new Scanner(System.in).nextInt();
int sum =0;//求和,多个单位数的和
int s=0;//单位数
for(int i=1;i<=n;i++){ //第几位单位数
for(int j=i;j<=i;j++){//输出单位数,单位数的位数
s += Math.pow(10,(i-1)*a);//减去个位
}
sum+=s;
}
System.out.println("s="+sum);
}
}
4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
//4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
import java.util.Scanner;
public class Test4{
public static void main(String[] args){
System.out.println("请输入这个数列的第N个数的位置:");
int sc =new Scanner(System.in).nextInt();
int a =2;//分子
int b=1;//分母
long c=2;
long d =1;
for(int i=2;i<=sc;i++){
int temp =a;
a = a+b;
b =temp;
long temp1=d*b;
c=c*b+d*a;
d=temp1;
System.out.println("第"+i+"个分数为"+a+"/"+b+",和的值为:"+c+"/"+d);
}
}
}
5.编写一个程序,根据输入某个班级学员的成绩,计算该班级学员的平均成绩, 班级的人数要求用户输入,根据输入的人数,分别录入学员的成绩,计算该 班级学员的平均成绩,并显示计算结果
/*5.编写一个程序,根据输入某个班级学员的成绩,计算该班级学员的平均成绩,
班级的人数要求用户输入,根据输入的人数,分别录入学员的成绩,计算该
班级学员的平均成绩,并显示计算结果*/
import java.util.Scanner;
public class Test5{
public static void main(String[] args){
System.out.println("请输入班级的人数n:");
int n =new Scanner(System.in).nextInt();
double sum =0;
for(int i=1;i<=n;i++){
System.out.println("请输入第"+i+"个学生的成绩:");
double man =new Scanner(System.in).nextDouble();
sum+=man;
}
System.out.println("该班的平均成绩为:"+sum/n);
}
}
6.输入两个数,求两个数的最小公倍数
//6.输入两个数,求两个数的最小公倍数
import java.util.Scanner;
public class Test6{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数整数n:");
int n =input.nextInt();
System.out.println("请输入第二个数整数m:");
int m =input.nextInt();
int max = n>m?n:m;
for(int i =max;i<n*m;i++){
if(i%n==0&&i%m==0){//从两个数中的最大值开始判定能与分别两个数除尽的
System.out.println("最小公倍数为:"+i);
break;//不加break则当不满足时无执行语句,无法进行++操作
}
}
}
}
7.五位数中,对称的数称为回文数,找出所有的回文数。如12321(***)
//7.五位数中,对称的数称为回文数,找出所有的回文数。如12321(***)
public class Test7{
public static void main(String[] args){
System.out.println("五位数中回文数:");
for(int n=10000;n<=99999;n++){
int a =n/10000;//万位
int b =n/1000%10;//千位
int c =n/10%10;//十位
int d =n%10;//个位
if(a == d && b == c){
System.out.print("\t"+n);
}
}
}
}