1.水仙花数
分析:如;153=1^3+5^3+3^3,则153是一个“水仙花数“。
因此1.求这个数有几位 2.求这个数字的每一位
这时我们可以定义一个count,并且/10,/10一次去掉一位,count+1
for (int i=1;i<=999999;i++){ //1.求这个数字有几位 int count = 0; int tmp=i; while(tmp !=0){ count++; tmp/=10; } tmp=i;这里我们要求每一位上的数字,153%10=3并且/10去掉一位,因此我们要一直%10,/10
//2.求tmp的每一位 int sum=0; while (tmp!=0){ sum+=Math.pow(tmp%10,count);//这个代表比如tmp%10=3就是3的3次 tmp/=10; }所以完整代码
public static void main(String[] args) { for (int i=1;i<=999999;i++){ //1.求这个数字有几位 int count = 0; int tmp=i; while(tmp !=0){ count++; tmp/=10; } tmp=i; //2.求tmp的每一位 int sum=0; while (tmp!=0){ sum+=Math.pow(tmp%10,count);//这个代表比如tmp%10=3就是3的3次 tmp/=10; } if (sum==i){ System.out.println(i); } } }2.which括号里不能是long float double Boolean,可以是byte、char、short、int;
3.数字9 出现的次数
编写程序数一下 1到 100 的所有整数中出现多少个数字9
1-89的9都在个位数上,我们直接%10,90以上的在十位,我们/10
public static void main(String[] args) { int count = 0; for (int i=1;i<=100;i++){ if (i%10==9){ count++; } if (i/10==9){ count++; } } System.out.println(count); }如果有多少个数字包含9
public static void main(String[] args) { int count = 0; for (int i=1;i<=100;i++){ if (i%10==9){ count++; } else if (i/10==9){ count++; } } System.out.println(count); }4.求2个整数的最大公约数
给定两个数,求这两个数的最大公约数;例如:输入:20 40 输出:20
当余数为零,那除数就是最大公约数;
public static void main(String[] args) { int a=24; int b=18; int c=a%b; while (c!=0){ a=b; b=c; c=a%b; } System.out.println(b); }5.计算分数的值
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
public static void main(String[] args) { double sum=0; int flg=1; for (int i=1;i<=100;i++){ sum=sum+flg*1.0/i; flg=-flg; } System.out.println(sum); }6.实现猜数字游戏
完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。
import java.util.Random; import java.util.Scanner; public static void main(String[] args) { //生成随机数 Random random = new Random(); int randNum = random.nextInt(100);//[0,100) System.out.println(randNum); //输入 Scanner scanner = new Scanner(System.in); //猜数字 int count = 3;//最多猜三回 while (count !=0){ System.out.println("请输入你要猜测的数字:"); int num = scanner.nextInt(); if (num<randNum){ count--; System.out.println("猜小了,你还有"+count+"次机会"); } else if (num>randNum) { count--; System.out.println("猜大了,你还有"+count+"次机会"); }else { System.out.println("猜对了"); return; } } System.out.println("你的机会用完了!"); }7.打印 X 图形
多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ if (i==j || i+j==(n-1)){ System.out.print("*"); }else { System.out.print(" "); } } System.out.println(); } }8.输出一个整数的每一位
输出一个整数的每一位,如:123的每一位是3,2,1
public static void main(String[] args) { int n=123; while (n!=0){ System.out.println(n%10); n/=10; } }9.模拟登陆
编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = 3; while (count!=0){ System.out.println("请输入密码:"); String password = scanner.nextLine(); // if (password=="123456"){ if (password.equals("123456")){ System.out.println("密码正确!"); return; }else { System.out.println("密码错误!你还有"+count+"次机会"); count--; } } }10.求最大值方法的重载
在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?
public static int zuida(int a,int b){ return a>b?a:b; } public static double zuida(double a,double b,double c){ return (a>b?a:b)>c?(a>b?a:b):c; } public static void main(String[] args) { System.out.println(zuida(1.1,1.2,1.3)); }