JavaTask/day03.md

13 KiB
Raw Blame History

package qf.Test.day3;

import java.util.ArrayList; import java.util.List; import java.util.Scanner;

public class day03 {

private static void demo1() {
    //1、读入一个整数表示一个人的年龄。
    // 如果小于6岁则输出“儿童”
    // 6岁到13岁输出“少儿”
    // 14岁到17岁输出“青少年”
    // 18岁到35岁输出“青年”
    // 36岁到50岁输出“中年”
    // 50岁以上输出“中老年”。
    System.out.println("请输入年龄:");
    Scanner scanner = new Scanner(System.in);
    int age = scanner.nextInt();
    if (age <= 6) {
        System.out.println("儿童");
    } else if (age <= 13) {
        System.out.println("少儿");
    } else if (age <= 17) {
        System.out.println("青少年");
    } else if (age <= 35) {
        System.out.println("青年");
    } else if (age <= 50) {
        System.out.println("中年");
    } else {
        System.out.println("中老年");
    }
}

private static void demo2() {
    //计算销售总金额
    //图书批发商店的某本书的零售价是26.5元/本,
    // 如果客户一次性购买100本以上包括100本则每本的价格打9折
    // 如果客户一次性购买500本以上包括500本则每本的价格打8折并返回1000元给客户
    // 请分别计算购买8本、150本、600本的应付金额是多少。要求购买书的数量从控制台输入。
    float price = 26.5f;
    System.out.println("请输入要购买的数量:");
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();
    if (100 <= num) {
        price = (float) (price * 0.9);
        System.out.println("应付金额为:" + (price * num));
    } else if (500 <= num) {
        price = (float) (price * 0.8);
        System.out.println("应付金额为:" + ((price * num) - 1000));
    }else {
        System.out.println("应付金额为:" + (price * num));
    }
}

private static void demo3() {
    //读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份是否是闰年:
    //.1 如果这个年份能够被4 整除且不能被100 整除则这一年是闰年。例如1996 年是闰年而相应的1993 年就不是闰年。
    //.2 要能被400 整除也是闰年。例如2000 年是闰年1900 年不是闰年。
    System.out.println("请输入年份:");
    Scanner scanner = new Scanner(System.in);
    int year = scanner.nextInt();
    if(year%4 == 0 && year%100 != 0 || year%400 == 0) {
        System.out.println(year + "是闰年");
    } else {
        System.out.println(year + "不是闰年");
    }
}

private static void demo4() {
    //代码如下,运行完成之后的结果是:10是偶数。横线处补全代码

// int a = 10; // if (____________) { // System.out.println(a + "是偶数"); // } int a = 10; if (true) { System.out.println(a + "是偶数"); } }

private static void demo5() {
    //以下代码运行结果?
    //饿了么?
    boolean flag = false;
    int num = 10;
    if (flag){
        num++;
    }
    num++;
    if(num < 11){
        System.out.println("天生我材必有用");
        if (num > 5){
            System.out.println("千金散尽还复来");
        }
    }
    System.out.println("饿了么?");
}

private static void demo6() {
    //读入一个整数如果是1~5 之间则分别输出5个福娃的名字否则输出“”。
    System.out.println("请输入数字:");
    Scanner scanner = new Scanner(System.in);
    int fuwa = scanner.nextInt();
    switch(fuwa){
        case 1:
            System.out.println("贝贝");
            break;
        case 2:
            System.out.println("晶晶");
            break;
        case 3:
            System.out.println("欢欢");
            break;
        case 4:
            System.out.println("迎迎");
            break;
        case 5:
            System.out.println("妮妮");
            break;
        default:
            System.out.println("北京欢迎你");
            break;
    }
}


private static void demo7() {
 //读入一个整数输出对应季度。35月春季68月夏季911月秋季122月冬季
    System.out.println("请输入月份:");
    Scanner scanner = new Scanner(System.in);
    int month = scanner.nextInt();
    if (3 <= month && month <= 5){
        System.out.println("春季");
    }else if (6 <= month && month <= 8){
        System.out.println("夏季");
    }else if (9 <= month && month <= 11){
        System.out.println("秋季");
    }else if ((0 < month && month <= 2) || month == 12){
        System.out.println("冬季");
    }else{
        System.out.println("月份不正确");
    }
}

private static void demo8() {
    //以下代码运行结果为?简述原因?
    //输出40不管if如何执行最后都会把40赋值给b
    int a = 20;
    if (a == 20) {
        int b = 30;
    }
    int b = 40;
    System.out.println(b);
}

private static void demo9(){
    //计算1+2+3+...+100 的和
    int sum = 0;
    for(int i = 1;i <= 100;i++){
        sum +=i;
    }
    System.out.println("1+2+3+...+100 的和为:" + sum);
}

private static void demo10(){
    //计算计算1+3+5+...+99的和
    int sum = 0;
    for(int i = 1;i <= 100;i++){
        if(i%2 != 0){
            sum +=i;
        }
    }
    System.out.println("1+3+5+...+99的和为:" + sum);
}

private static void demo11(){
    //把10、11 两题用while 循环或do...while 循环改写。
    int sum10 = 0,i = 1;
    while(i <= 100){
        sum10 +=i;
        i++;
    }
    System.out.println("1+2+3+...+100 的和为:" + sum10);
    int sum11 = 0,m = 1;
    while(m <= 100){
        if(m%2 != 0){
            sum11 +=m;
        }
        m++;
    }
    System.out.println("1+3+5+...+99的和为:" + sum11);

}

private static void demo12(){
    //读入一个小于10 的整数n输出它的阶乘n。
    System.out.println("请输入小于10的数字:");
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();
    int factorial = 1;
    for(int i = 1;i <= num;i++){
        factorial *= i;
    }
    System.out.println(num + "的阶乘为:" + factorial);
}

private static void demo13(){
    //求100 以内所有能被3 整除但不能被5 整除的数字的和。
    int num = 0;
    for(int i = 1;i <= 100;i++){
        if(i%3 == 0 && i%5 != 0){
            num += i;
        }
    }
    System.out.println("能被3整除但不能被5整除的数字的和为:" + num);
}

private static void demo14(){
    //编程找出四位整数abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
    for(int i = 1000;i <= 9999;i++){
        int ab = i/100;
        int cd = i%100;
        if((ab+cd) * (ab+cd) == i){
            System.out.println("满足条件的数是:" + i);
        }
    }
}

private static void demo15(){
    //输出99 乘法表。
    for(int i = 1;i < 10;i++){
        for(int j = 1;j <= i;j++){
            System.out.print(j + "*" + i + "=" + (i*j) + "\t");
        }
        System.out.println();
    }
}

private static void demo16(){
    //计算2000年1月1日到2008年1月1日相距多少天。注意闰年
    int day = 0;
    for(int year = 2000;year < 2008;year++){
        if(year%4 == 0 && year%100 != 0 || year%400 == 0) {
            day += 366;
        } else {
            day += 365;
        }
    }
    System.out.println("2000年1月1日到2008年1月1日相距\t" + day + "天");
}

private static void demo17() {
    //读入一个整数n输出如下图形
    //n = 3
    //  *
    //
    // ***
    //
    //*****
    //n = 4
    //   *
    //
    //  ***
    //
    // *****
    //
    //*******
    System.out.println("请输入数字:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    for(int i = 1; i<=n; i++){
        //输出n-i个空格
        for(int j = 1; j<=n-i; j++){
            System.out.print(" ");
        }
        //输出2*i-1个星
        for(int j = 1; j<=2*i-1; j++){
            System.out.print("*");
        }
        //换行
        System.out.println();
    }
}

private static void demo18(){
    //求水仙花数。
    //提示所谓水仙花数是指一个三位数abc如果满足a³+b³+c³=abc则abc是水仙花数。
    int num = 0;
    for(int i = 100;i <= 999;i++){
        int a = i/100;
        int b = i/10%10;
        int c = i%10;
        int res = a*a*a + b*b*b + c*c*c;
        if(res == i){
            num++;
        }
    }
    System.out.println("水仙花数为:" + num);
}

private static void demo19(){

// 写一个方法add两个整数作为参数返回这两个整数的和。 // public static int add(int a, int b){ // return a + b; // } System.out.println(day03.add(10,11)); }

private static void demo20(){
    //写一个方法整数n作为参数输出这个整数的所有因子
    System.out.println("请输入整数:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.println(day03.factor(n));
}

private static void demo21(){
    //写一个方法整数n作为参数输出1+2+3+...+n 的和。
    System.out.println("请输入整数:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    System.out.println(day03.sum(n));
}

private static void demo22(){
    //写一个函数整数n作为参数输出n个HelloWorld
    System.out.println("请输入整数:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    for (int i = 0; i < n; i++){
        day03.helloworld();
    }
}

private static void demo23(){
    //写一个函数整数n作为参数输出这个n是几位数
    System.out.println("请输入整数:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    jiwei(n);
}

private static void demo24(){
    //验证哥德巴赫猜想任何一个大于6的偶数都能分解成两个质数的和。要求输入一个整数输出这个数能被分解成哪两个质数的和。
    //eg : 14
    //14=3+11
    //14=7+7
    System.out.println("请输入整数:");
    Scanner scanner = new Scanner(System.in);
    int n = scanner.nextInt();
    if (n > 6 && n % 2 == 0) {
        for (int i = 3; i <= n/2; i+=2) {
            if (isPrime(i) && isPrime(n - i)) {
                System.out.println("这个数能被分解成\t" + i + "和" + (n - i) + "\t两个质数的和");
            }
        }
    } else {
        System.out.println("输入的" + n + "不是大于6的偶数");
    }

}
public static void main(String[] args) {
    demo24();
}

//两数相加
public static int add(int a, int b){
    return a + b;
}
//获取n的全部因子
public static String factor(int n) {
    List list = new ArrayList<Integer>();
    for (int i = 1; i < n; i++) {
        if (n % i == 0) {
            list.add(i);
        }
    }
    return list.toString();
}
//输出1+2+3+...+n 的和
public static int sum(int n){
    int sum = 0;
    for (int i = 1;i <= n;i++){
        sum += i;
    }
    return sum;
}
//输出n个HelloWorld
public static void  helloworld(){
    System.out.println("HelloWorld");
}
//输出n是几位数
public static void jiwei(int n){
    int w = 0;
    int num = n;
    do{
        w++;
        n = n /10;
    }while(n!=0);
    System.out.println(num + "是" + w + "位数");
}
//判断是否为质数
public static boolean isPrime(int n){
    for(int i = 2; i <= Math.sqrt(n); i++){
        if (n % i == 0){
            return false;
        }
    }
    return true;
}

}