1.回文数
1.1需求
需求:给你一个整数x
如果x是一个回文整数,打印true,否则返回false
回文数是指正序(从左到右)和倒序(从右到左)读都是一样的
例如:121是,123不是
1.2分析
分析该问题,可以考虑先将整数x反转,然后判断反转后的整数是否与原整数相等。具体步骤如下:
- 如果x为负数,则直接返回false;
- 如果x为非负数,则可以通过取x的各个位上的数字反复进行整数运算,得到x的反转值A;
- 当反转值 A等于原数x时,x就是回文整数,返回true,否则返回false。
1.3代码实现
具体代码如下:
package text01;
import java.util.Scanner;
public class text18A {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数x: ");
int x = scanner.nextInt();
if (isPalindrome(x)) {
System.out.println("true");
} else {
System.out.println("false");
}
}
// 定义了一个方法判断是否为回文数
public static boolean isPalindrome(int x) {
if (x < 0) { // 负数不是回文数
return false;
}
// a为原本的数,A为倒过来的数
int a = x; //定义一个变量a记录x的值
int A = 0;
while (a != 0) {
int c= a % 10; //定义一个变量c用于记录x的个位上的数
A = A * 10 + c;
a /= 10; // 注意:整数的除法运算自动舍弃小数部分;
}
return x == A;
}
}
1.4 输出结果
- 输入121,输出true,表明是回文数;
- 输入123,输出false,表明不是回文数;
2.求商和余数
2.1 需求
需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围)
将两数相除,要求不使用乘法、除法和%运算符,得到商和余数。
2.2思路分析
要实现这个需求,可以使用减法和循环来逐步逼近被除数和除数的差值,直到差值小于除数为止。
具体的步骤如下:
- 判断被除数和除数是否为0,如果beichushuwei0,则输出被除数不能为0,如果除数为0,则输出除数不能为0;
- 定义一个变量 a来保存商的结果,初始值为0;
- 使用循环来逐步减去除数,直到被除数小于除数;
- 每次循环减去除数后,将商的结果加1;
- 判断是否有余数,如果有余数,则用变量h记录余数的值,并输出。
2.3代码实现
public class text19A {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入被除数:");
int i = sc.nextInt(); //定义变量i用于接收被除数
if (i == 0) { //判断被除数是否为0;
System.out.println("被除数不能为0!");
break;
}
System.out.println("请输入除数:");
int j = sc.nextInt(); //定义变量j用于接收除数
int a = 0;//定义个变量a用于接受 被除数-除数 的次数,即为商
int h = 0; //定义变量h用于接收 余数
boolean n = true;
if (j == 0) { //判断除数是否为0
System.out.println("除数不能为0!");
break;
} else {
while (n) {
if (i - j >= j) { //被除数-除数的值大于等于除数
a++;
i = i - j;
} else {
a++;
h = i - j;
n = false;
}
}
System.out.println("商为:" + a);
System.out.println("余数为:" + h);
break;
}
}
}
}
2.4 结果
- 被除数输入0,输出被除数不能为0,并结束程序
- 除数输为0,输出除数不能为0,并结束程序
- 输入被除数15,除数3,输出商为5,余数为0
- 输入被除数15,除数2,输出商为7,余数为1