while语句
格式:
while(条件表达式)
{
需要重复执行的功能代码–循环体;
}
工作原理:先判断条件是否为真(true),为真则执行循环体一次,然后再重新判断条件,若为true,再执行一次循环体,如此反复,直到条件为假时结束循环。
do–while语句
格式:
do
{
需要重复执行的功能代码-循环体;
}while(条件表达式)
工作原理:先执行循环体一次,然后再判断条件,若为true,再执行一次循环体,再判断条件,若条件为true,则再执行循环体,如此反复,直到条件为假时结束循环
与while的区别:do-while至少执行一次循环体,while有可能一次都不执行
for语句
格式:for(表达式1;表达式2;表达式3)
{
需要重复执行的代码–循环体;
表达式1:初始化表达式,用于初始化后面两个表达式需要的变量
表达式2:循环控件条件表达式,用于判断是否再执行循环体
表达式3:改变循环控制变量的表达式。
}
工作原理:
先执行表达式1,再判断表达式2是否为true,为true时则执行循环体,然后执行表达式3,接着再判断表达式2,若为true,再执行循环体,再执行表达式3,如此反复,直到表达式为false时,结束循环。
注意事项
1.for循环结束后,表达式1中定义变量的内存会释放,即变量的作用域已结束
2.变量的作用域(范围):每一个变量是有作用域的,从变量的定义位置开始,到变量所在大括号结束位置
3.如果循环结束后,循环中的变量不再使用时,适合选择for循环,反之可以选择while或do-while循环。
思考案例
1、for循环中哪些表达式可以省略,省略之后,会出现什么情况? 如果三个表达式都省略时会出现什么情况 ?
(1)for小括号内三个表达式为空
eg for(;;)
printf (“test”);
在小括号内只有两个分号,无表达式。表示无限循环。这种无限循环适用于菜单选择程序中。
(2)没有循环体的for语句
eg:for(; *str==”; str++);
这种情况循环体内的语句只是一个分号,这个for循环是指针str所指流中的前导空格删除。
例:for (t=0;t ;)
此例在程序中起延时作用。
2、计算1~10的累加和
public class homework02 {
public static void main(String[] args) {
int sum=0;
for(int i=0;i<=10;i++)
{
sum=sum+i;
}
System.out.println(sum);
}
}
3、求1~100之间的可以被7整除的数的个数
public class homework03 {
public static void main(String[] args) {
int count=0;
for(int i=1;i<=100;i++)
{
if(i%7==0)
{
count++;
}
}
System.out.println("可以被7整除的个数为:"+count);
}
}
4、3000米长的绳子,每天减一半。问多少天这个绳子的长度会小于5米?(不考虑小数)
public class homework04 {
public static void main(String[] args) {
int count=0;
for(int i=3000;i>=5;i=i/2)
{
count++;
}
System.out.println("第"+count+"天绳子的长度会小于5米");
}
}
5、 产生1~10之间的数,用户去猜这个数,直到猜中为止
import java.util.Random;
import java.util.Scanner;
public class homework05 {
public static void main(String[] args) {
Random myRandom=new Random();
int number=myRandom.nextInt(10)+1;
Scanner myScanner=new Scanner(System.in);
System.out.println("请输入1-10之间的数");
int guess=myScanner.nextInt();
if(guess==number)
{
System.out.println("恭喜你,猜对啦!");
}
else
{
System.out.println("对不起,正确数字为"+number);
}
myScanner.close();
}
}
6、计算给定正整数的各位数的和,如用户输入1234,结果即是1+2+3+4=10的值
import java.util.Scanner;
public class homework06 {
public static void main(String[] args) {
System.out.println("程序目的:计算给定整数的各位数的和");
System.out.println("请输入给定整数");
Scanner myScanner = new Scanner(System.in);
int number = myScanner.nextInt();
int result = 0;
String answer = "";
int times = 1;
int count;
int data = 0;
for (int i = 1;; i++) {
if (number < times) {
System.out.println("用户输入位数为:" + (i - 1));
count = i - 1;
break;
}
times = times * 10;
}
times = times / 10;
data = result;
for (int i = count; i > 0; i--) {
data = data + number / times;
if (i == count) {
answer = number / times + "";
} else {
answer = answer + "+" + number / times + "";
}
number = number - number / times * times;
times = times / 10;
}
System.out.println(answer + "=" + data);
myScanner.close();
}
}
7、计算给定数的阶乘,可以重复该过程(提示是否继续?1:是 0:否),如5的阶乘: 5*4*3*2*1=120
import java.util.Scanner;
public class homework07 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
int answer;
System.out.println("本程序目的:计算给定数的阶乘");
do {
System.out.println("请给出您需要计算的阶乘数:");
int a = myScanner.nextInt();
String result = "";
int sum = 1;
for (int i = 1; i <= a; i++) {
sum = sum * i;
result = result + i + "*";
}
System.out.println( result +"="+ sum);
System.out.println("是否继续? 1: 是 0:否");
answer = myScanner.nextInt();
} while (answer == 1);
myScanner.close();
}
}
8、打印九九乘法表
public class homework08 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + i * j+" ");
}
System.out.println();
}
}
}
9、以*字符表示,打印一个实心长方形、一个直角三角形、实心菱形、空心菱形
import java.util.Scanner;
public class homework09 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("本程序目的:输出实心长方形");
System.out.println("请输入长方形的长:");
int a = myScanner.nextInt();
System.out.println("请输出长方形的宽:");
int b = myScanner.nextInt();
myScanner.close();
for (int i = 1; i <= b; i++) {
for (int j = 1; j <= a; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class homework10 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("本程序目的:输出直角三角形");
System.out.println("请输入三角形的一条直角边:");
int a = myScanner.nextInt();
//System.out.println("请输出长方形的另一条直角边:");
// int b = myScanner.nextInt();
myScanner.close();
for(int i=1;i<=a;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print("*");
}
System.out.println();
}
}
}
import java.util.Scanner;
public class homework11 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("本程序目的:输出实心菱形");
System.out.println("请输入菱形的边长:");
int a = myScanner.nextInt();
myScanner.close();
for (int i = 1; i <= a; i++) {
for (int k = 0; k <= i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= a; j++) {
for (int k = 0; k <= 1; k++) {
System.out.print(" ");
}
if (i == 1 || i == a) {
System.out.print("*");
} else {
System.out.print("*");
}
}
System.out.println();
}
}
}
import java.util.Scanner;
public class homework12 {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("本程序目的:输出空心菱形");
System.out.println("请输入菱形的边长:");
int a = myScanner.nextInt();
myScanner.close();
for (int i = 1; i <= a; i++) {
for (int k = 1; k <= i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= a; j++) {
if (i == 1 || i == a) {
System.out.print("*");
} else {
if (j == 1 || j == a) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
}
}
}