Java基础入门训练


一、根据年龄数值输出年龄段

题目内容: 

  根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)


Java代码实现

import java.util.Scanner;

 public static void main0(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.print("请输入这个人的年龄大小:");

        int age = scan.nextInt();

        if(age>=0 && age<=18){
            System.out.println("少年");
        }
        else if(age>=19 && age<=28){
            System.out.println("青年");
        }
        else if(age>=29 && age<=55){
            System.out.println("中年");
        }
        else if(age>=56){
            System.out.println("老年");
        }
    }

  我们输入一个数值的大小,程序会打印出对应的年龄段.


二、打印1-100素数

题目内容:


  打印1-100之间存在的素数


Java代码实现

 public static void main(String[] args) {
        int i=1;
        int j=2;
        int count=0;
        for(i=1;i<=100;i++){

            for(j=2;j<i;j++){
                if (i%j==0){
                    break;
                }
            }
            if(i==j){
                System.out.println(i);
                count++;
            }
        }
        System.out.println(count);
    }

注意点:打印出1-100之间的素数,我们用的是较为简单的做法,还可以更加方便地求解,比如i++ --> i+=2,偶数不可能是素数。还可以将j的范围缩小到 i/2 或者 i开平方.


三、判断素数

题目内容:


  输入一个数字判断是否是素数


Java代码实现:

 import java.util.Scanner;
 public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.printf("请输入要判断的数字:");
        int num=scan.nextInt();
        int i=0;
        for( i=2;i<num;i++){
            if(num%i==0){
                System.out.println(num+"不是素数");
                break;
            }
        }
        if(i==num){
            System.out.println(num+"是素数");
        }
    }

注意点:同上


四、输出闰年

题目内容:


  输出 1000 - 2000 之间所有的闰年


Java代码实现:

public static void main(String[] args) {
        int count = 0;
        for(int year=1000;year<=2000;year++){

            if((year%4==0) && (year %100!=0) ||(year %400 == 0) ){

                System.out.println(year);
                count++;
            }
        }
        System.out.println(count);

    }

五、输出乘法口诀表

题目内容:


  输出9*9乘法口诀表


Java代码实现:

public static void main(String[] args) {

        for(int i=1;i<10;i++){

            for(int j=1;j<=i;j++){
                System.out.printf("%d*%d=%-2d  ",j,i,i*j);
            }
            System.out.println();
        }
    }
 


注意点:格式化输出,我们可以采用C语言中printf函数的格式.


六、求两个正整数的最大公约数

题目内容:


  输入两个正整数,输出他们的最大公约数


Java代码实现:

import java.util.Scanner;
public static void main(String[] args) {

        Scanner sc =  new Scanner(System.in);

        int a=sc.nextInt();

        int b=sc.nextInt();

        int c = 0;

        if(a<b){
            int tmp = a;
            a = b;
            b = tmp;
        }

        while(a%b!=0) {
            c = a % b ;
            a = b;//
            b = c;

        }

        System.out.println(b);
    }

注意点:我们做题时用到了辗转相除法,不了解规则的同学可以来到我的往期博客C语言编程笔试题(二)了解.


七、计算表达式的值

题目内容:


  计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。


Java代码实现:

public static void main(String[] args) {
        int flag = 1;
        double sum = 0.0;
        for(int i=1;i<=100;i++){
            sum += (flag)*(1.0/i) ;

            flag=-flag;

        }
        System.out.println(sum);


    }

注意点: sum += ( flag ) * ( 1.0 / i) ;这里一定要明确 是1.0 / i ,不是1 / i.另外sum要定义成double类型.


八、数字9 出现的次数

题目内容:


  编写程序数一下 1到 100 的所有整数中出现多少个数字9


// 9  19  29  39  49  59  69  79  89  90  91  92  93 94  95  96  97  98  99

    public static void main(String[] args) {

        int count = 0;
        for( int i = 0;i<=100;i++){

            if(i%10==9){
                count++;
            }
            if(i/10==9){
                count++;
            }
        }
        System.out.println(count);
    }


注意点:99中9出现了两次,所以我们用两个if语句,分别对含有9的数字中9的个数进行计数.


九、求水仙花数

题目内容:


  求出0~999之间的所有“水仙花数”并输出。

  水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如:153=1+5+3?,则153是一个“水仙花数.


Java代码实现:


  public static void main(String[] args) {
  
        for(int n=1;n<999;n++){
            int tmp=n;
            int count = 0;
            //1.算出该数字有多少位

            while(tmp!=0){
                count++;
                tmp = tmp/10;
            }//得到的count 即为该数字的位数

            //2.将该数字的每一位数字得到,算出每一位数字的次方的和
            tmp=n;
            int sum = 0;
            while(tmp!=0){
                sum += Math.pow(tmp%10,count);
                tmp = tmp/10;
            }

            //3.比较结果与原数字是否相等

            if(sum==n){
                System.out.println(sum+"是水仙花数");
            }
        }
    }

1.算出该数字有多少位

2.将该数字的每一位数字得到,算出每一位数字的次方的和

3.比较结果与原数字是否相等


十、编写代码模拟三次密码输入的场景

题目内容:


  最多能输入三次密码,密码正确,提示“登录成功”,密码错误可以重新输入.

  最多输入三次。三次均错,则提示退出程序


Java代码实现:

 import java.util.Scanner;
 
  public static void main(String[] args) {

        Scanner sc =  new Scanner(System.in);

        int count = 3;

        while(count>0){

            System.out.println("请输入密码:");

            String password = sc.nextLine();

            if(password.equals("123456")){
                System.out.println("输入正确 , 登陆成功 !!");
            }
            else{
                count--;
                System.out.println("输入错误 ,"+"你还有"+count+"次机会!!");
            }
        }

    }

注意点:equals() 比较字符串的功能.


十一、求二进制位中1的个数

题目内容:


  写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1


Java代码实现:

import java.util.Scanner;

 public static void main(String[] args) {
        Scanner sc =  new Scanner(System.in);
        System.out.print("请输入数字:");
        int num = sc.nextInt(www.jqmms.com);
        int count = 0;
        for(int i=0;i<32;i++){
            if(((num>>i) & 1 )== 1){
                count++;
            }
        }
        System.out.println(count);
    }
注意点: 明确位操作符& 的作用,二进制的每一位 &1,都可以得到这一位上的数字


十二、求二进制奇偶序列

题目内容:


  获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。


Java实现代码:

import java.util.Scanner;

 public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num = s.nextInt();

        // 取到二进制数列中的偶数位

        for(int i=31;i>=0;i-=2){
            System.out.print(((num>>i)&1)+" ");
        }
        System.out.printf("\n");//换行打印

        // 取到二进制序列中的奇数位

        for(int i=30;i>=0;i-=2){
            System.out.print(((num>>i)&1)+" ");
        }
    }


注意点:这是练习十二的拓展,我们根据二进制数列的奇偶位进行取位.


十三、猜数字游戏

  我们实现简单的猜数字游戏,由电脑随机生成100以内的数字,我们进行猜测,直到猜对为止,程序退出。


Java代码实现:

import java.util.Random;
import java.util.Scanner;

 public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);

        Random random = new Random();
        int randNum = random.nextInt(100);
        //System.out.println(randNum);


        while(true){
            System.out.println("请输入数字:");
            int num=scan.nextInt();
            if(num<randNum){
                System.out.println("你猜小了");
            }
            else if(num==randNum){
                System.out.println("你猜对了");
                break;
            }
            else if(num>randNum){
                System.out.println("你猜大了");
            }
        }

    }

04-14 19:58