Java-常见练习题


一、打印九九乘法表

代码如下(示例):

package com.ljf.ketanlinxi;
public class JF1 {
    public static void main(String[] ags){
        for (int x = 1;x < 10;x++) {
            for (int y = 1;y <= x;y++)  //当列数小于行数时,继续打印
                System.out.print(y +"*"+ x + "=" + x * y +" ");
            System.out.println();
        }
    }
}

要想打印九九乘法表,思路为:

首先定义两个变量,一个用来标记行数,一个用来标记列数,这就要求使用双重for

循环。

运行测试:


二、求任意输入数据区间的质数(以从键盘输入1到100为例)

代码如下(示例):

package com.ljf.ketanlinxi;
import java.util.Scanner;
public class JF2 {
    public static void main(String[] ags) {
        System.out.println("此代码可求a~b之间的质数,请输入a和b:");
        Scanner number = new Scanner(System.in);
        int count = 0;     //换行计数用
        int a = number.nextInt();
        int b = number.nextInt();
        for (int i = a; i <= b; i++) {
            boolean flag = true;     //内层循环判断i是否为质数
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {    //除了1和它本身以外,如果i可以整除其他数就flag = false
                    flag = false;
                    break;
                }
            }
            if(flag) {
                count++;
                System.out.print(i + "\t");
                if (count % 10 == 0) {
                    System.out.println();   //每当输出10个数时,就换行输出
                }
            }
        }
        System.out.println();
        System.out.println("质数的总个数为:" + count);
    }
}

运行测试:

 


三、求任意输入数据区间的水仙花数(以从键盘输入100到999为例)

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

代码如下(示例):

package com.ljf.ketanlinxi;
import java.util.Scanner;     //引入创建扫描器的包
public class JF3 {
    public static void main(String[] ags) {
        System.out.println("此代码可求a~b之间的水仙花数,请输入a和b:");
        Scanner number = new Scanner(System.in);  //创建扫描器
        int gei,shi,bai;
        int count = 0;       //计数用
        int a = number.nextInt();
        int b = number.nextInt();
        for(int i = a;i < b;i++){
            gei = i%10;      //取出个位
            shi = i/10%10;   //取出十位
            bai = i/100;     //取出百位
            if(i == gei*gei*gei + shi*shi*shi + bai*bai*bai){
                count ++;    //每当打印出一个水仙花,累加器自动加一
                System.out.print(i + " ");
            }
        }
        System.out.println("水仙花个数为:" + count);
    }
}

运行测试:


四、求任意数的阶乘,其中对负数和0需要有特殊处理

代码如下(示例):


package com.ljf.ketanlinxi;
import java.util.Scanner;   //引入创建扫描器的包
public class JF4 {
    public static void main(String[] ags){
        System.out.println("请输入需求阶乘的n值:");
        Scanner number = new Scanner(System.in);  //创建扫描器
        int n = number.nextInt();
        int w = 1;
        if(n < 0){
            System.out.println("负数没有阶乘,请结束此次运行,重新计算需求阶乘的n值!");
        }else {
            if (n == 0) {
                System.out.println(n + "的阶乘为" + 1);
            }else{
                for(int i = 1;i <= n;i++)
                    w = w * i;
                System.out.println(n + "的阶乘为" + w);
            }
        }
    }
}

五、输入一个秒数,转化成**时**分**秒形式输出

代码如下(示例): 

package com.ljf.ketanlinxi;
import java.util.Scanner;  //引入创建扫描器的包
public class JF5 {
    public static void main(String[] args) {
        System.out.println("请输入一个数字秒数:");
        Scanner scan = new Scanner(System.in);  //创建一个扫描器
        int num;
        int hour = 0;       //小时
        int minute = 0;     //分钟
        int seconds = 0;    //秒
        num = scan.nextInt();
        seconds = num % 60;
        num -= seconds;
        if (num > 0) {      //若已减完,即num=0,则minute和hour都为0
            num /= 60;
            minute = num % 60;
            num -= minute;
            if (num > 0) {  //若已减完,即num=0,则hour为0
                hour = num / 60;
            }
        }
        System.out.printf("%d时%d分%d秒\n", hour, minute, seconds);
    }
}

运行测试: 


总结

本文仅仅简单介绍五个常见的Java练习题,只能说是提供了一些小小的快速便捷地处理数据的函数和解决问题的方法。等以后学会到了Java中类似C语言中的goto语法,上面求阶乘中对负数的特殊处理,还会完善优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值