前言
以下习题有不理解的可以私信我,若习题有错误也请大家指出,非常感谢。
一、编写代码模拟三次密码输入场景,最多输入三次,密码正确,提示登陆成功,密码错误,可以重新输入,最多输入三次。三次均错,退出程序。
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int count = 3; while (count != 0) { System.out.println("请输入密码,你还剩" + count + "次机会"); String password = sc.nextLine(); if (password.equals("1234")) { //字符串比较相等不相等 System.out.println("登陆成功"); break; } else { System.out.println("密码错误"); count--; } } }
二、输出一个整数的每一位
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字"); while (sc.hasNextInt()) { int number = sc.nextInt(); while (number != 0) { System.out.println(number % 10 + " "); number /= 10; } } } }
三、获取一个数的二进制序列中所以的奇数位和偶数位,分别输出序列。
public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 31; i >= 0; i -= 2) { //输出奇数位 System.out.print(((n >>> i) & 1) + " ");//0&1=0 1&1=1 } System.out.println(); for (int i = 30; i >= 0; i -= 2) { //输出偶数位 System.out.print(((n >>> i) & 1) + " "); } } }
四、完成猜数字游戏,用户输入数字,判断改数字是大于还是小于,还是等于随机生成的数字,等于是退出程序。
public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random r = new Random(); int number = r.nextInt(100) + 1; System.out.println(number); //先输出随机数 while (true) { System.out.println("请输入你要猜的数字"); int num = sc.nextInt(); if (num < number) { System.out.println(num + "猜小了"); } else if (number < num) { System.out.println(num + "猜大了"); } else { System.out.println("猜中了"); break; } } }
五、输入一个数,求100~输入数字以内的水仙花数
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入"); int n = sc.nextInt(); for (int i = 100; i < n; i++) { int count = 0; int flg = i; while (flg != 0) { count++; flg /= 10; } int sum = 0; flg = i; while (flg != 0) { sum += Math.pow(flg % 10, count);//求flg%10的count次方 flg /= 10; } if (sum == i) { System.out.println(i); } } } }
六、给两个数求最大公约数
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数字"); int num1 = sc.nextInt(); System.out.println("请输入第二个数字"); int num2 = sc.nextInt(); if (num2 > num1) { //辗转相除法 int temp = 0; temp = num1; num1 = num2; num2 = temp; } int c = num1 % num2; while (c != 0) { num1 = num2; num2 = c; c = num1 % num2; } System.out.println(num2); } }
七、求一个数字二进制中一的个数
public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个数"); int n = sc.nextInt(); int count = 0; while (n != 0) { count++; n = n & (n - 1); } System.out.println(count); }