作业2 Java API

一、编程题

(1)编程实现如下功能:
从控制台输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。其中,从控制台获得输入的代码参考如下:
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
提示:使用String类和Character类的相应方法来实现。


(2)利用Random类来产生5个20到50之间的随机数。
提示:[n-m] (n,m均为整数,n小于m)之间的随机数的公式为n+(new Random()).nextInt(m-n+1)。


(3)计算从今天算起,100天以后是几月几号,并格式化成××××年×月×日的形式打印出来。
提示:参考教材222-228页Date类,Calendar类,和DateFormat类的用法完成本程序。其中,调用Calendar类的add()方法计算100天后的日期;调用Calendar类的getTime()方法返回Date 类型对象;使用FULL格式的DateFormat对象,调用format()方法格式化Date对象。

二、作业结果和分析

(1)程序1运行结果

java可编程式接口 java接口编程题_java可编程式接口

分析:通过Scanner 类的nextLine()方法从控制台输入一串字符,然后通过String类的toCharArray()方法把字符串转换成数组,然后遍历,通过Character类的isLetter(),isSpaceChar(),isDigit()判断是否为英文字母、空格、数字,是就计数量++,然后就可以统计出英文字母、空格、数字的个数了,再用字符总数减去英文字母、空格、数字的个数即可求出其他字符个数。

(2)程序2运行结果

java可编程式接口 java接口编程题_character_02

分析:根据公式n+(new Random()).nextInt(m-n+1)输出随机数。

(3)程序3运行结果

java可编程式接口 java接口编程题_java_03

分析:通过calendar类的getTime()获得当前时间,calendar类的add(Calendar.DATE, 100)求出100天后的时间,fullFormat.format()格式化输出

三、源代码

(1)程序1源代码

package task2;

import java.util.Scanner;

public class CharCount {

    public static void main(String[] args) {

        // 创建Scanner类实例对象,用于从控制台输入
        Scanner scan = new Scanner(System.in);

        // 提示用户输入
        System.out.println("欢迎光临~晴之小店~    o(≧v≦)o~~");
        System.out.println("这里可以统计出你所输入的英文字母、空格、数字和其它字符的个数。");
        System.out.println("不信?赶紧试试吧\n");
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        System.out.println("开始请按1,退出请按0:");
        int temp = scan.nextInt();
        if (temp == 0) {
            System.out.println("欢迎下次光临~(≧▽≦)~再见");
        }
        // 用于清除缓冲区
        String s1 = scan.nextLine();

        while (temp != 0) {

            System.out.println("请输入一串字符:");
            String str = scan.nextLine();

            // 把字符串转换成数组
            char array[] = str.toCharArray();

            // 遍历判断,统计英文字母、空格、数字和其它字符的个数。
            int countEng = 0;
            int countSpace = 0;
            int countDidit = 0;
            Long startTime = System.currentTimeMillis(); // 开始时间
            for (int i = 0; i < array.length; i++) {

                // 统计英文字母
                if (Character.isLetter(array[i])) {
                    countEng++;
                }
                // 统计空格的个数
                if (Character.isSpaceChar(array[i])) {
                    countSpace++;
                }
                // 统计数字的个数
                if (Character.isDigit(array[i])) {
                    countDidit++;
                }

            }
            // 统计其它字符的个数
            int countOther = array.length - countEng - countSpace - countDidit;
            Long endTime = System.currentTimeMillis(); // 开始时间

            System.out.println("英文字母有       " + countEng + "个");
            System.out.println("        空格有     " + countSpace + "个");
            System.out.println("        数字有     " + countDidit + "个");
            System.out.println("其它字符有       " + countOther + "个");
            if (endTime - startTime > 0) {
                System.out.println("用时" + (endTime - startTime) + "毫秒");
            }

            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

            System.out.println("继续请按1,退出请按0:");
            temp = scan.nextInt();
            if (temp == 0) {
                System.out.println("欢迎下次光临~(≧▽≦)~再见");
            }
            // 用于清除缓冲区
            String s2 = scan.nextLine();

        }

    }

}

(2)程序2源代码

package task2;

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

public class TestRandom {
    public static void main(String[] args) {
        System.out.println("欢迎光临~晴之小店~     o(≧v≦)o~~");
        System.out.println("这里可以生成随机数哦~");

        Scanner sc = new Scanner(System.in);

        System.out.println("开始请按1,退出请按0:");

        int temp = sc.nextInt();
        if (temp == 0) {
            System.out.println("欢迎下次光临~(≧▽≦)~再见");
        }
        while (temp == 1) {
            System.out.println("请问你想生成几个随机数呢?");
            int x = sc.nextInt();
            System.out.println("请输入范围:");
            int m = sc.nextInt();
            int n = sc.nextInt();
            System.out.println("生成的随机数为:");
            Long startTime = System.currentTimeMillis(); // 开始时间
            // [n-m] (n,m均为整数,n<m)之间的随机数的公式为n+(new Random()).nextInt(m-n+1)。
            for (int i = 0; i < x; i++) {
                System.out.print(m + (new Random()).nextInt(n - m + 1) + "  ");

            }
            Long endTime = System.currentTimeMillis(); // 结束时间
            System.out.println();
            if (endTime - startTime > 0) {
                System.out.println("用时" + (endTime - startTime) + "毫秒");
            }

            System.out.println("继续请按1,退出请按0:");
            temp = sc.nextInt();
            if (temp == 0) {
                System.out.println("欢迎下次光临~(≧▽≦)~再见");
            }
        }
    }
}

(3)程序3源代码

package task2;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class CountDate {
    public static void main(String[] args) {
        System.out.println("欢迎光临~晴之小店~     o(≧v≦)o~~");
        System.out.println("这里可以计算出n天(如:100天)以后是几月几号哦~");

        Scanner sc = new Scanner(System.in);
        System.out.println("开始请按1,退出请按0:");
        int temp = sc.nextInt();

        if (temp == 0) {
            System.out.println("欢迎下次光临~(≧▽≦)~再见");
        }
        while (temp == 1) {
            // 获取当前时间的Calendar对象
            Calendar calendar = Calendar.getInstance();
            System.out.println("从今天开始算起请按0,从某一天开始算起请按1");
            int way = sc.nextInt();
            if (way == 1) {
                System.out.println("请输入年、月、日:");
                int y = sc.nextInt();
                int m = sc.nextInt()-1;
                int d = sc.nextInt();
                // 开启non-lenient模式
                calendar.setLenient(false);
                calendar.set(y, m, d);
            } else {
                System.out.print("今天是:");
            }
            // Full格式的日期格式器对象
            DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL);
            System.out.println(fullFormat.format(calendar.getTime()));
            calendar.add(Calendar.DATE, 100);
            // 下面打印格式化后的日期或者日期/时间
            System.out.println("100天后:" + fullFormat.format(calendar.getTime()));
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            System.out.println("继续请按1,退出请按0:");
            temp = sc.nextInt();
            if (temp == 0) {
                System.out.println("欢迎下次光临~(≧▽≦)~再见");
            }
        }
    }
}