今天学习的是循环和判断,内容还挺简单的,不过里面有两道小练习,回文数和商和余数这两道经典算法题,相信大家都会做。
目录
1.if 判断语句
格式一:
if(关系表达式){
语句体;
}
格式二:
if(关系表达式){
语句体;
} else {
语句体;
}
格式三:
if(关系表达式){
语句体;
} else if(关系表达式){
语句体;
}
...
else {
语句体 n + 1;
}
三种格式可以按照具体需求去使用
2.switch 判断语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体 n + 1;
break;
}
知识点:
(1)default可以省略,位置也可以随便放
(2)case具有穿透性
(3)switch和if的第三种格式使用场景类似
3.for 循环语句
格式:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
4.while 循环语句
格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
for 和 while 的区别:
for 循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
while 循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
for 和 while 的使用场景:
for 循环中:知道循环的次数和范围
while 循环:只知道循环的结束条件
5.do...while 循环语句
格式:
初始化语句;
do {
循环体语句;
条件控制语句;
} while(条件判断语句);
特点是先做后判断,且至少执行一次循环体语句
6.练习题
练习题1:回文数
需求:键盘录入一个整数x。
如果x是一个回文整数,打印true,否则,返回false。
解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121是回文,而123不是。
下面是我自己写的代码,大家看看有没有可以改进的地方,负数的回文数目前还不会
public class Test {
public static void main(String[] args) {
//判断是否为回文数
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int temp = x;//临时变量储存x
int number = 0;
while (x > 0) {
number = (number * 10) + (x % 10);//得到个位,然后与前面提升位数的相加
x /= 10;//修改数值
}
System.out.println(temp == number);
}
}
练习题2:求商和余数
需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围)。
将两数相除,要求不使用乘法、除法和%运算符。
得到商和余数。
public class Test2 {
public static void main(String[] args) {
//不使用*/%三个运算符求商和余数
//被除数/余数
Scanner sc = new Scanner(System.in);
System.out.println("请输入被除数");
int number1 = sc.nextInt();
System.out.println("请输入除数");
int number2 = sc.nextInt();
int shang = 0;
int yushu;
if (number1 >= number2) {
while (number1 >= number2) {
number1 = number1 - number2;//相减的次数就是商,直到被除数小于除数
shang++;
}
yushu = number1;//此时不能再减了,被除数就是余数了
} else {//被除数小于除数的情况
yushu = number1;
}
System.out.println("商为:" + shang);
System.out.println("余数为:" + yushu);
}
}
应该就是这样写了。嗯,没毛病!
终于搞完了,洗澡去!