while 与 do-while之间的区别
- while 先判断条件,再执行循环体,(后面没有;)
- do - while 先执行一次循环体,再判断条件,进行循环。(后面有;)
public static void main(String[] args) {
int sum = 0;
int i = 1;
// do {
// i += 1;
// System.out.println(i + ". Hello,world!");
// } while (i < 10);
// System.out.println("程序结束!!!");
/* do {
sum += i;
i++;
} while (i <= 100 );
System.out.println("最终结果为:" + sum);//1到100相加
//for(;;)括号中可以不写条件,但是必须要有两个分号;
for (int j = 1; j <= 10; j++) {//for循环
System.out.println(j + ". hello,world");
}
*/
for(i = 1; i <= 100; i++){
sum += i;
}
System.out.println(sum);
}
for循环练习:输入一个数,算出这个数的阶层
- for(;;)循环括号中可以不写条件,但是必须要有两个;
- 对于较大的数字,建议使用double,它可以用科学计数法表示
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = input.nextInt();
if (n >= 0) {
double result = 1;//使用double,可以用科学计数法
for(int i = 1;i <= n; i++){
result *= i;
}
System.out.println(n + "的阶层为:" + result);
}
else {
System.err.println("输入错误");
}
input.close();
}
练习:猜字游戏
- Math.random()用于系统产生0~1的随机数,但不包括1
public static void main(String[] args) {
int answer = (int) (Math.random() * 100 + 1);
Scanner input = new Scanner(System.in);
int thyAnswer;
int counter = 0;
do {
counter += 1;
System.out.print("请输入一个数字:");
thyAnswer = input.nextInt();//thy表示你的
if (thyAnswer > answer) {
System.out.println("小一点");
}
else if(thyAnswer < answer){
System.out.println("大一点");
}
else{
System.out.println("恭喜你猜对了!你总共猜了" + counter + "次");
}
} while (thyAnswer != answer);
if (counter > 7) {
System.out.println("智商捉急");
}
input.close();
}
练习:for嵌套switch-case
public static void main(String[] args) {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
for(int i = 1;i <= 60000;i++){
int face = (int) (Math.random()*6+1);
switch (face) {
case 1:
a++;break;
case 2:
b++;break;
case 3:
c++;break;
case 4:
d++;break;
case 5:
e++;break;
case 6:
f++;break;
default:
break;
}
}
System.out.println("1点出现的次数为:" + a);
System.out.println("2点出现的次数为:" + b);
System.out.println("3点出现的次数为:" + c);
System.out.println("4点出现的次数为:" + d);
System.out.println("5点出现的次数为:" + e);
System.out.println("6点出现的次数为:" + f);
}
练习:求出100~999之间的水仙花数
- 例:153 = 1^3 + 5^3 + 3^3 (153就是水仙花数)
public static void main(String[] args) {
for(int i = 100;i <= 999;i++){
int hun = i / 100;
int ten = (i % 100) / 10;
int one = i % 10;
if (i == hun*hun*hun + ten*ten*ten + one*one*one) {
System.out.println(i + "是水仙花数:");
}
}
}
练习:输入两个数,求最大公约数和最小公倍数
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入两个正整数:");
int a = input.nextInt();
int b = input.nextInt();
for(int i = a < b ? a : b; i >= 1; i--){
if (a % i == 0 && b % i == 0) {
System.out.println("最大公约数为:" + i);
System.out.println("最小公倍数为:" + a * b / i);
break;
}
}
input.close();
}