前言
通过本篇题目,可以让初学Java的小伙伴们更加熟练Java的基础语法~
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
题1:数字9 出现的次数
题述:编写程序数一下 1到 100 的所有整数中出现多少个数字9
思路
分两步
取个位上的9 有9 19 29……99 有10个取十位上的9 有90 91 92 93……99 有10个代码实现
public class test { //1~100数字9出现的个数 public static int fan1(int n){ int count=0; for (int i = 1; i <=100 ; i++) { if(i%10==9){//取个位上的9 有9 19 29……99 有10个 count++; } if(i/10==9){//取十位上的9 有90 91 92 93……99 有10个 count++; } } return count ; } public static void main(String[] args) { System.out.println(fan1(100)); }
结果是20
题2:计算阶乘的和
题述:输入一个正整数,求它从1到该整数阶乘的和。如指定数字5,求1!+2!+……5!
思路
先实现一个数求阶乘的方法,再相加
代码实现
//写一个函数求阶乘 public static int fac(int n) { int ret = 1; for (int i = 1; i <= n; i++) { ret *= i; } return ret; } //此函数求阶乘的和 public static int facSum(int n){ int sum=0; for (int i = 1; i <=n ; i++) { sum+=fac(i); } return sum;//要记得要写返回值,漏了就会一直报错 } public static void main(String[] args) { int n=facSum(5); System.out.println(n); }
结果是153
题3:求水仙花数
水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(,水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
思路
统计当前数字有几位数取到数字的每一位上的数字判断是否符合要求例如 153(1^3 + 5^3+ 3^3 = 153)
步骤是先统计153有3位数字,再取到153每一位数字,最后判断1^3 + 5^3+ 3^3 = 153是否成立
代码实现
public static void main(String[] args) { //求水仙花数 for (int i = 0; i <= 999999; i++) {//遍历1~999999的数字 //计算当前有几位数 int count=0; int tmp=i; while(tmp!=0){ count++; tmp/=10; } //求tmp的每一位 tmp=i; int sum=0; while(tmp!=0){ sum+=Math.pow(tmp%10,count);//计算tmp的count次方 tmp/=10; } if(sum==i){ System.out.println(i); } } }
结果中153 、370、371、407是水仙花数
题4:打印素数
打印1~100的素数
思路1
法一:写一个方法判断一个数字是否是素数,再遍历2~100,打印符合的数字
代码实现1
//判断一个数字是否是素数 public static boolean is_prime(int n){ for (int i = 2; i <n ; i++) { if(n%i==0){ return false; } } return true; } public static void main(String[] args) { //打印1~100的素数 for (int i = 2; i <=100 ; i++) { if(is_prime(i)){ System.out.print(i+" "); } } }
思路2
法二:num=a*b 其中a和b两个必有一个 <= 根号num
代码实现2
public static void main(String[] args) { //打印1~100的素数 int num=100; for (int k = 1; k <= num; k++) { int i = 2; //跳出for循环时有两个结果 for ( ; i <=Math.sqrt(k) ; i++) {//1.i>根号num if(k%i==0){//2.num被整除了 break; } } if(i>Math.sqrt(k)) { System.out.println(k+" "); } }
结果
题5:猜数字游戏的实现
import java.util.Random;import java.util.Scanner; public static void main(String[] args) { //java实现猜数字游戏 int count=5; Scanner scan=new Scanner(System.in); Random random=new Random(); int randNum=random.nextInt(100);//[0,100) //System.out.println("随机数是:"+randNum);用于测试时使用 while(true){ System.out.println("你还有"+count+"次机会!"); System.out.println("请输入要猜的数字:"); int num=scan.nextInt(); if(num>randNum){ System.out.println("猜大了!"); } else if(num<randNum){ System.out.println("猜小了!"); } else{ System.out.println("恭喜你,猜对了!数字是:"+randNum); break; } count--; if(count==0){ System.out.println("很遗憾,挑战失败!数字是:"+randNum); break; } } }
结果
题6:打印x形图案
思路
利用坐标关系i==j和i+j=n-1时打印*,其他情况打印空格
代码实现
//打印x形图案 public static void printX(int n){ 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();//换行 } } public static void main(String[] args) { printX(5); }
结果
题7:计算分数
代码实现
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 public static void main(String[] args) { double ret=0;//注意这里要用double,不能用int int flag=1; for (int i = 1; i <=100;i++) { ret += 1.0 / (flag * i); flag=-flag;//用于改变i的符号 } System.out.println(ret); }
结果 0.688172179310195
题8:模拟登陆
题述:编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序
代码实现
public static void login(){ int count=3; Scanner scan=new Scanner(System.in); String string="123456"; while(count!=0){ System.out.println("请输入密码:"); String password= scan.nextLine(); if(password.equals(string)){//匹配字符串用equals //登录成功 System.out.println("登录成功!"); break; } else{ //登录失败 count--; System.out.println("密码错误,你还有"+count+"次机会!"); } } } public static void main(String[] args) { login(); }
结果