1、多重循环的概念:
多重循环就是一个循环里面包含着一个完整的循环,一般不超过三个循环。
2、解释几个词的含以及作用。
continue:只能在循环语句中使用,跳过循环体后面的语句,执行一次,一般和条件语句一起使用;
break:通常和switch或者循环语句中使用;终止循环内的语句,跳转到循环外的下一条语句;
return:结束当前方法的执行并退出,返回到主程序外。
debug:方便查询调试程序。
3、下面我就来列举一些循环语句中常出现的例子。
3.1 输出一个乘法口诀表
public static void main(String[] args) {
int i=1,j=1;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
3.2将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数:");
int Num = input.nextInt();
System.out.print(Num+"=");
int k = 2;
while (Num > 1) {
if(Num==k){
System.out.println(Num);
break;
}
if(Num%k==0)
{
System.out.print(k+"*");
Num=Num/k;
continue;
}
k++;
}
}
分析:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n不等于k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步
比如输入90
3.3求 s=a+aa+aaa+....aaa..a的值,其中a是数字;比如3+33+333, 重点是先求出每一位的数
public static void main(String[] args) {
int s1=0,s2=0,i=1;
Scanner input =new Scanner(System.in );
System.out.print("请输入一个数:");
int a=input.nextInt();
for(i=1;i<a;i++)
{
s1 = 10 * s1 + a;
System.out.print(s1+"+");
s2=s2+s1;
}
if(i==a)
{
s1 = 10 * s1 + a;
System.out.print(s1);
s2=s2+s1;
}
System.out.print("=");
System.out.print(s2);
}
3.4求一个数加上100,是一个数的平方,在加上168,是另一个数的平方
public static void main(String[] args) {
int s=0,y=0;
for(int i=1;i<=100000;i++) {
for(int j=i+1;j<=100000;j++)
if (j*j-i*i==168) {
if(i*i-100>0) {
System.out.println(i * i - 100);
}
}
}
}
重点在于,J*J-i*i=168 的关系,
3.5用* 打出一个菱形来
public static void main(String[] args) {
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5-i;j++)
{
System.out.print(" ");
}
for (int j=1;j<=2*i-1;j++)
{
System.out.print("* ");
}
System.out.println();
}
for(int i=1;i<=4;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(" ");
}
for (int j=1;j<=9-2*i;j++)
{
System.out.print("* ");
}
System.out.println();
}
}
分析:先做三面的三角形,在做下面的三角形,可以分析行与列的关系,打印不同的形状,比如梯形,空心的菱形等。
3.6一个分数列 2/1 3/2 5/3 8/5....求前20项的和
public static void main(String[] args) {
int a=1,b=2,c;
double s=0.0;
for (int i=1;i<=20;i++)
{
s=s+(double) b/a;
c=b;
b=a+b;
a=c;
}
System.out.println("前二十项的和:"+s);
这题主要分析出上一个数的分子,作为下一个数的分子,只需要将两个数交换一下位置就ok了。
3.7对十个数进行排序
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.print("输入几个数字:");
int nub=input.nextInt();
int[] a=new int[nub];
for (int i=0;i<nub;i++)
{
System.out.print("输入第"+(i+1)+"个");
a [i]= input.nextInt();
}
Arrays.sort(a); //使用sort函数使其从小到大排序
System.out.print("从小到大排序为:");
for (int i=0;i<nub;i++)
{
System.out.print(a[i]+"、");
}
}
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("请输入几个数:");
int Num=input.nextInt();
int []a=new int[Num];
for(int i=1;i<=Num;i++){
System.out.print("输入的第"+i+"个数是:");
a[i]=input.nextInt();
}
for(int i=1;i<=Num;i++)
{
for(int j=2;j<=Num;j++) {
int c;
if (a[i] < a[i + 1]) {
continue;
} else {
c = a[i];
a[i] = a[j];
a[j] = c;
}
}
System.out.print(a[i]+" ");
}
}
分析:对于一系列的数的排序,可以选择函数法sort来自动排序(图一),也可以用常见的冒泡法来排序(图二)
3.8 打印出杨辉三角形
public static void main(String args[])
{ int x=10; int num[][] = new int[x][x];
for(int m=0;m<x;m++) {
for (int n = 0; n <= m; n++) {
if (n == 0 || m == n) {
num[m][n] = 1;
} else
num[m][n] = num[m - 1][n - 1] + num[m - 1][n];
}
}
for(int i=0;i<x;i++) {
for (int l = i; l < x; l++) {
System.out.print(" ");
}
for (int j = x - i; j <= x; j++) {
System.out.print(num[i][x - j] + " ");
}
System.out.println();
}
}
分析:每一行的第一个数和每一行的最后一个数都是1;从第三行起,每一行的第二个数字往后都等于上面两个数的和,通过这个关系,把式子列出来,再把数字输出来,最后再来一个循环把数字排列好。
3.9判断2-100之间有多少个素数,并输出所有素数
public static void main(String[] args) {
int s=0;
for(int i=2;i<=100;i++)
{
for(int j=2;j<=i;j++)
{
if(i%j==0&&i!=j)
{
break;
}
if(i==j) {
System.out.println(i);
s++;
}
}
}
System.out.println(s);
}
常见的差不多可以分为这些,主要是分析出题中的重点关系,把语句梳理通;或者先写一些简单可以运行出来的,在一步步加进去。