【Java】第9章_Common_utility_classes 上机实践与习题

实验1 检索简历

mess.indexOf(":");	//代码1	mess调用indexOf(String s)方法返回字符串中首次出现冒号的位置

mess.indexOf(":", index + 1);	//代码2	mess调用indexOf(String s, int start)方法返回字符串中第二次出现冒号的位置

mess.indexOf("身高");	//代码3	mess调用indexOf(String s)方法返回字符串中首次出现“身高”的位置

mess.indexOf(":", heightPosition + 1);	//代码4	mess调用indexOf(String s, int start)方法返回字符串中“身高”后面的冒号的位置

mess.lastIndexOf(":");	//代码5	mess调用lastIndexOf(String s)方法返回字符串中最后一个冒号的位置
  • 实验后的练习
FirstBCFirstBC
FirstSecondCFirstSecondC
FirstSecondThirdFirstSecondThird
String s2 = Long.toBinaryString(12345);
String s8 = Long.toOctalString(12345);
String s16 = Long.toHexString(12345);
System.out.println("二进制:" + s2 + " 八进制:" + s8 + " 十六进制" + s16);

实验2 购物小票

  • 实验后练习
String regex = "[0123456789.]+元";
String temp = s2.replaceAll(regex, "");
temp = temp.replaceAll(":", " ");
temp = temp.replaceAll(",", " ");
System.out.println("货品名称:" + temp);

实验3 成绩单

new Scanner(chengjiForm);	//代码1	创建Scanner,将chengjiForm传递给构造方法的参数

scanner.useDelimiter(regex);	//代码2	scanner调用useDelimiter(String regex),将regex传递给该方法的参数

scanner.nextDouble();	//代码3	scanner调用nextDouble()返回数字单词
  • 实验后练习
package ScannerParseString;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ScannerParse {
    public static void main (String args[]) {
        String menu = "北京烤鸭:189,西芹炒肉:12.9,酸菜鱼:69,铁板牛柳:32";
        Scanner inTo = new Scanner(menu);
        String regex = "[^0123456789.]+";
        inTo.useDelimiter(regex);
        double sum = 0;
        while(inTo.hasNext()) {
            try {
                double price = inTo.nextDouble();
                sum = sum + price;
                System.out.println(price);
            }
            catch(InputMismatchException exp) {
                String t = inTo.next();
            }   //当单词不是数字型单词时,调用nextInt()或nextDouble()产生异常
        }
        System.out.println("总价格:" + sum);
    }
}

习题9

  • 1.ABD,C的值是 true;
    这个true只是一个巧合,Java编译器在编译期,会自动把所有相同的字符串当作一个对象放入常量池中;
  • 2.Love:Game
  • 3.不同编码的汉字占字节数不同,链接:Java中汉字占几个字节.
    15,abc我们;(这是按照两个字节算的)
  • 4.13579
  • 5.9javaHello,str1多了第一个8;
  • 6.代码:
        String str1 = "hELLO",
                str2 = "World";
        str1 = str1.toLowerCase();
        str2 = str2.toUpperCase();
        str1 = str1.concat(str2);
        System.out.println(str1);
  • 7.代码:
        String str1 = "hELLO";
        System.out.println(str1.charAt(0) + ":" + str1.charAt(str1.length() - 1));
  • 8.代码:

InputYearAndMonth.java

package calendar;

import java.util.Scanner;

public class InputYearAndMonth {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year = scanner.nextInt();
        System.out.print("请输入月份:");
        int month = scanner.nextInt();
        CalendarBean calendarBean = new CalendarBean();
        calendarBean.setYear(year);
        calendarBean.setMonth(month);
        String[] a = calendarBean.getCalendar();
        char[] str = "日一二三四五六".toCharArray();
        for(char c : str) {
            System.out.printf("%3c", c);
        }
        for(int i = 0; i < a.length; i++) {
            if(i % 7 == 0) {
                System.out.println("");
            }
            System.out.printf("%4s", a[i]);
        }
    }
}

CalendarBean.java

package calendar;

import java.util.Calendar;

public class CalendarBean {
    String [] day;
    int year = 0, month = 0;
    public void setYear(int year) {
        this.year = year;
    }
    public void setMonth(int month) {
        this.month = month;
    }
    public String[] getCalendar() {
        String[] a = new String[42];
        Calendar rili = Calendar.getInstance();
        rili.set(year, month - 1, 1);
        int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 1;   //计算出1号的星期
        int day = 0;
        if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
            day = 31;
        }
        if(month == 4 || month == 6 || month == 9 || month == 11) {
            day = 30;
        }
        if(month == 2) {
            if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
                day = 29;
            }
            else {
                day = 28;
            }
        }
        for(int i = 0; i < weekDay; i++) {
            a[i] = " ";
        }
        for(int i = weekDay, n = 1; i < weekDay + day; i++) {
            a[i] = String.valueOf(n);
            n++;
        }
        for(int i = weekDay + day; i < a.length; i++) {
            a[i] = " ";
        }
        return a;
    }
}

在这里插入图片描述

  • 9.代码:

Interval.java

package numbersOfDaysBetween;

import java.util.*;
//静态导入Calendar类的静态常量
import static java.util.Calendar.*; //第18行,直接获取当前月份

public class Interval {
    public static void main(String args[]) {
        Calendar calendar = Calendar.getInstance();
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年:");
        int y1 = scanner.nextInt();
        System.out.print("请输入月:");
        int m1 = scanner.nextInt();
        System.out.print("请输入日:");
        int d1 = scanner.nextInt();
        calendar.set(y1, m1 - 1, d1);
        System.out.println(calendar.get(MONTH));
        long time1 = calendar.getTimeInMillis();
        System.out.print("请输入年:");
        int y2 = scanner.nextInt();
        System.out.print("请输入月:");
        int m2 = scanner.nextInt();
        System.out.print("请输入日:");
        int d2 = scanner.nextInt();
        calendar.set(y2, m2 - 1, d2);
        long time2 = calendar.getTimeInMillis();
        long days = (time2 - time1) / (1000 * 60 * 60 * 24);
        System.out.printf("%d-%d-%d 和 %d-%d-%d\n相隔%d天\n", y2, m2, d2, y1, m1, d1, days);

    }
}

链接:Calendar中的常量值.

  • 10.代码:

MathTest.java

package mathStaticMethod;

public class MathTest {
    public static void main(String args[]) {
        double a = -6.66;
        System.out.println(Math.abs(a));
        System.out.println(Math.max(Math.E, Math.PI));
        System.out.println(Math.min(Math.E, Math.PI));
        System.out.println(Math.random());
        System.out.println(Math.pow(Math.E, a));
        System.out.println(Math.sqrt(Math.PI));
        System.out.println(Math.log(a));
        System.out.println(Math.sin(a));
        System.out.println(Math.asin(a));
    }
}

在这里插入图片描述

  • 11.代码:

StringRemoved.java

package stringParsing;

import java.util.InputMismatchException;
import java.util.Scanner;

public class StringRemoved {
    public static void main(String args[]) {
        String regex = "[^0123456789]+";
        String str = "ab123you";
        Scanner scanner = new Scanner(str);
        scanner.useDelimiter(regex);
        while(scanner.hasNext()) {
            try {
                System.out.println(scanner.next());
            }
            catch (InputMismatchException exp) {
                String t = scanner.next();
            }
        }
    }
}

  • 12.代码:
    和11题代码差别不大

StringRemoved.java

package stringParsing;

import java.util.InputMismatchException;
import java.util.Scanner;

public class StringRemoved {
    public static void main(String args[]) {
        String regex = "[^0123456789]+";
        String charge = "数学87分,物理76分,英语96分";
        Scanner scanner = new Scanner(charge);
        scanner.useDelimiter(regex);
        double sum = 0;
        while(scanner.hasNext()) {
            try {
                sum = sum + scanner.nextDouble();
            }
            catch (InputMismatchException exp) {
                String t = scanner.next();
            }
        }
        System.out.println("总成绩:" + sum + " 平均分数:" + sum / 3);
    }
}

发布了77 篇原创文章 · 获赞 160 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43763494/article/details/104201465
今日推荐