实验6:Java常用实用类

实验名称:实验6:Java常用实用类

一、实验目的

熟悉Java 中的常用实用类。

二、实验内容与结果

(说明:按实验任务分别填写任务描述、处理思路及关键技术说明、程序源码和运行结果截图,不要心得与体会。)

任务1String类的public char charAt(int index)方法可以得到当前字符串index位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。

处理思路

如题,输入字符串并用String类的public char charAt(int index)方法得到该字符串中首位末位字符,进行输出

关键技术说明

String类的public char charAt(int index)方法可以得到当前字符串index位置上的一个字符。

字符串末尾可用length()-1表示,即字符序列长度减一得位置

程序源码

package s;
import java.util.Scanner;
public class s1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String s1=sc.next();
        System.out.println("首位字符:"+s1.charAt(0));
        System.out.println("末位字符:"+s1.charAt(s1.length()-1));
    }
}

运行结果截图

 

   任务2编写程序剔除一个字符串中的全部非数字字符,例如,将形如“ab123you”的非数字字符全部剔除,得到字符串“123”(参看例子10)。

处理思路

如题,输入字符串,并使调用replaceAll()方法剔除所有非数字字符返回一个新String对象,进行输出

关键技术说明

String s2=s1.replaceAll("[\\D]","");

通过正则表达式+replaceAll()实现

\D:代表任何一个非数字字符

程序源码

package s;
import java.util.Scanner;

public class s2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String s1=sc.next();
        String s2=s1.replaceAll("[\\D]","");
        System.out.println(s1+"剔除所有非数字字符后:"+s2);
    }
}

运行结果截图

 

   任务3使用Scanner类的实例解析字符串:"数学87分,物理76分,英语96分"中的考试成绩,并计算出总成绩以及平均分数(参看例子14)。

处理思路

如题,构造Scanner类对象,进行数据解析处理得到想要的数据,并用hasNext()与next()进行处理,求和计数求均值

关键技术说明

scanner.useDelimiter("[^0123456789.]+");//匹配所有非数字字符序列

hasNext()最后一个布尔型与next()挨个返回区别

程序源码

package s;
import java.util.Scanner;

public class s3 {
    public static void main(String[] args) {
        String grades="数学87分,物理76分,英语96";
        Get.give(grades);
    }
}

package s;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Get {
    public static void give(String grades) {//static方法,类名可调用
        Scanner scanner = new Scanner(grades);
        scanner.useDelimiter("[^0123456789.]+");//scanner设置分隔标记
        double sum = 0;
        int i=0;
        while (scanner.hasNext()) {
            try {
                double grade = scanner.nextDouble();
                sum = sum + grade;
                i++;
            }
            catch (InputMismatchException exp) {
                String t = scanner.next();
            }
        }
        double average =sum/i;
        System.out.println("总成绩:"+sum);
        System.out.println("平均成绩:"+average);
    }
}

运行结果截图

 

任务4计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日使用main方法的参数传递到程序中(见例子4)。

处理思路

如题,输入字符串yyyyMMdd形式日期,用SimpleDateFormat()转换为日期形式,再用getTime()计算时间相减为毫秒差再计算得天数差(用Data类解)

关键技术说明

用SimpleDateFormat()转换成yyyyMMdd形式输入日期

使用parse()方法将输入的字符串转换为日期

getTime() 方法返回从 1970 年 1 月 1 日午夜到指定日期之间的毫秒数。

将毫秒转换为天

程序源码

package s;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class s4 {
    public static void main(String[] args) throws ParseException {
        // 传输格式yyyyMMdd
       
Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个日期");
        String date1 = sc.next();
        System.out.println("请输入第二个日期");
        String date2 = sc.next();
        // SimpleDateFormat()转换成yyyyMMdd形式输入日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        //使用parse()方法将字符串转换为日期
        Date d1 = sdf.parse(date1);
        Date d2 = sdf.parse(date2);
        long time = Math.abs(d2.getTime() - d1.getTime());// getTime() 方法返回从 1970 1 1 日午夜到指定日期之间的毫秒数。
        System.out.println("间隔天数:" + (time / (1000 * 60 * 60 * 24)));//ms转换为天
    }
}

运行结果截图

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值