java编程思想第四版第十三章字符串 习题

时间:2023-03-09 00:54:06
java编程思想第四版第十三章字符串  习题
  1. fas
  2. 第二题
    package net.mindview.strings;
    
    import java.util.ArrayList;
    import java.util.List; /**
    * 无限循环
    */
    public class InfiniteRecursion {
    public InfiniteRecursion(){ }
    @Override
    public String toString() {
    return " InfiniteRecursion address" + super.toString() + "\n";
    }
    public static void main(String[] args) {
    List<InfiniteRecursion> list = new ArrayList<InfiniteRecursion>();
    for(int i=; i<; i++){
    list.add(new InfiniteRecursion());
    }
    System.out.println(list);
    }
    }
  3. fa
  4. 第四题
    package net.mindview.strings;
    
    import java.util.Formatter;
    
    public class Receipt {
    private double total = ;
    private Formatter f = new Formatter(System.out);
    public final int ITEM_WIDTH = ;
    public final int QTY_WIDTH = ;
    public final int PRICE_WIDTH = ;
    public final int PRICISION_FLOAT_WIDHT = ;
    public final int PRICISION_String_WIDHT = ;
    public final String TITLE_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
    + "s %" + PRICE_WIDTH + "s\n";
    public final String PRICE_FORMAT = "%-" + ITEM_WIDTH + "."
    + PRICISION_String_WIDHT + "s %" + QTY_WIDTH + "d %" + PRICE_WIDTH
    + "." + PRICISION_FLOAT_WIDHT + "f\n";
    public final String TOTAL_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
    + "s %" + PRICE_WIDTH + "." + PRICISION_FLOAT_WIDHT + "f\n"; //打印标题
    public void printTitle(){
    /*
    * 含义: 格式化字符串串以%开头
    * -: 表示左对齐
    * 15: 15表示宽度
    * s:表示数据的类型是String
    * .2f:表示浮点数保留的小数位数
    * .15s:表示字符串的长度最多15个字符
    */
    f.format(TITLE_FORMAT, "Item", "Qty", "Price");
    f.format(TITLE_FORMAT, "----", "---", "-----");
    } //正文的内容
    public void print(String name, int qty, double price){
    f.format(PRICE_FORMAT, name, qty, price);
    total += price;
    } //总价
    public void printTotal(){
    f.format(TOTAL_FORMAT, "Tax", "", total*0.06);
    f.format(TITLE_FORMAT, "", "", "-----");
    f.format(TOTAL_FORMAT, "Total", "", total*1.06);
    } public static void main(String[] args) {
    Receipt receipt = new Receipt();
    receipt.printTitle();
    receipt.print("Jack`s Magic Beans", , 4.25);
    receipt.print("Princess Peas", , 5.1);
    receipt.print("Three Bears Porridge", , 14.29);
    receipt.printTotal();
    } }

    运行结果:

    Item              Qty      Price
    ---- --- -----
    Jack`s Magic Be 4.25
    Princess Peas 5.10
    Three Bears Por 14.29
    Tax 1.42
    -----
    Total 25.06
  5. 第五题
    package net.mindview.strings;
    
    import java.util.Formatter;
    
    public class Receipt {
    private double total = ;
    private Formatter f = new Formatter(System.out);
    public final int ITEM_WIDTH = ;
    public final int QTY_WIDTH = ;
    public final int PRICE_WIDTH = ;
    public final int PRICISION_FLOAT_WIDHT = ;
    public final int PRICISION_String_WIDHT = ;
    public final String TITLE_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
    + "s %" + PRICE_WIDTH + "s\n";
    public final String PRICE_FORMAT = "%-" + ITEM_WIDTH + "."
    + PRICISION_String_WIDHT + "s %" + QTY_WIDTH + "d %" + PRICE_WIDTH
    + "." + PRICISION_FLOAT_WIDHT + "f\n";
    public final String TOTAL_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
    + "s %" + PRICE_WIDTH + "." + PRICISION_FLOAT_WIDHT + "f\n"; //打印标题
    public void printTitle(){
    /*
    * 含义: 格式化字符串串以%开头
    * -: 表示左对齐
    * 15: 15表示宽度
    * s:表示数据的类型是String
    * .2f:表示浮点数保留的小数位数
    * .15s:表示字符串的长度最多15个字符
    */
    f.format(TITLE_FORMAT, "Item", "Qty", "Price");
    f.format(TITLE_FORMAT, "----", "---", "-----");
    } //正文的内容
    public void print(String name, int qty, double price){
    f.format(PRICE_FORMAT, name, qty, price);
    total += price;
    } //总价
    public void printTotal(){
    f.format(TOTAL_FORMAT, "Tax", "", total*0.06);
    f.format(TITLE_FORMAT, "", "", "-----");
    f.format(TOTAL_FORMAT, "Total", "", total*1.06);
    } public static void main(String[] args) {
    Receipt receipt = new Receipt();
    receipt.printTitle();
    receipt.print("Jack`s Magic Beans", , 4.25);
    receipt.print("Princess Peas", , 5.1);
    receipt.print("Three Bears Porridge", , 14.29);
    receipt.printTotal();
    } }

    运行结果:

    Item              Qty      Price
    ---- --- -----
    Jack`s Magic Be 4.25
    Princess Peas 5.10
    Three Bears Por 14.29
    Tax 1.42
    -----
    Total 25.06
  6. afd
  7. 第七题:
    package net.mindview.strings.test7;
    
    public class Test7 {
    
        public static void main(String[] args) {
    //两种写法都可以
    String regex = "^[A-Z].*\\.$";
    String regex1 = "\\p{Upper}.*\\.$";
    String str = "D.";
    String str1 = "Dfasdfasfasfdasfdasfasfasdf.";
    String str2 = "Dfasdfasfasfdasfdasfasfasdf.E";
    System.out.println(str.matches(regex));
    System.out.println(str1.matches(regex));
    System.out.println(str2.matches(regex));
    System.out.println(str.matches(regex1));
    System.out.println(str1.matches(regex1));
    System.out.println(str2.matches(regex1));
    }
    }

    运行结果:

    true
    true
    false
    true
    true
    false
  8. 第八题
    package net.mindview.strings;
    
    import java.util.Arrays;
    
    public class Splitting {
    
        public static String knights = "Then, when you have found the shrubbery, you must cut down the mightiest tree in the forest... with... a herring!";
    
        public static void split(String regex){
    System.out.println(Arrays.toString(knights.split(regex)));
    }
    public static void main(String[] args) {
    //表示的时按照空格分割字符串
    //运行结果:[Then,, when, you, have, found, the, shrubbery,, you, must, cut, down, the, mightiest, tree, in, the, forest..., with..., a, herring!]
    split(" "); //表示按照非单次字符分割字符串--这里的非单次字符是空格和,
    //运行结果:[Then, when, you, have, found, the, shrubbery, you, must, cut, down, the, mightiest, tree, in, the, forest, with, a, herring]
    split("\\W+");
    //这个表示:费单次字符之前带n的地方进行分割字符串 这里的分割符是n空格和n,
    //运行结果:[The, whe, you have found the shrubbery, you must cut dow, the mightiest tree i, the forest... with... a herring!]
    split("n\\W+");
    } }
    package net.mindview.strings.test8;
    
    import net.mindview.strings.Splitting;
    
    public class Test8 {
    
        public static void main(String[] args) {
    String regex = "the|you";
    Splitting.split(regex);
    }
    }
  9. 第九题
    package net.mindview.strings.test9;
    
    import net.mindview.strings.Splitting;
    
    public class Test9 {
    public static void main(String[] args) {
    String regex = "A|E|I|O|U|a|e|i|o|u";
    //通过嵌入式标志表达式 (?i) 也可以启用不区分大小写的匹配。
    String regex1 = "(?i)a|e|i|o|u";
    //[abc] 表示a或b或c
    String regex2 = "(?i)[aeiou]";
    System.out.println(Splitting.knights.replaceAll(regex, "_"));
    System.out.println(Splitting.knights.replaceAll(regex1, "_"));
    System.out.println(Splitting.knights.replaceAll(regex2, "_"));
    }
    }
  10. 第十题
    package net.mindview.strings.test10;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern; public class Test10 {
    public static void main(String[] args) {
    String str = "Java now has regular expressions"; for(String arg: args){
    Pattern p = Pattern.compile(arg);
    Matcher m = p.matcher(str);
    while(m.find()){
    System.out.println("Match \"" + m.group() +"\" at positions " + m.start() + "-" + (m.end()-) );
    }
    System.out.println("\n");
    } }
    }

    输入参数:

    ^Java
    \Breg.*
    n.w\s+h(a|i)s
    s?
    s*
    s+
    s{}
    s{}.
    s{,}

    输出结果

    Match "Java" at positions -
    
    Match "now has" at positions -
    
    Match "" at positions --
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "s" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "s" at positions -
    Match "s" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "s" at positions -
    Match "" at positions - Match "s" at positions -
    Match "ss" at positions -
    Match "s" at positions - Match "s " at positions -
    Match "ss" at positions - Match "" at positions --
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "s" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "ss" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "" at positions -
    Match "s" at positions -
    Match "" at positions -
  11. 第十一题
    package net.mindview.strings.test11;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern; public class Test11 {
    public static void main(String[] args) {
    Pattern p = Pattern.compile("(?i)((^[aeiou])|(\\s+[aeiou]))\\w+?[aeiou]\\b");
    Matcher m = p.matcher("Arline ate eight apples and " +
    "one orange while Anita hadn't any"); while(m.find()){
    System.out.println("Match \"" + m.group() +
    "\" at positions " + m.start() + "-" +
    (m.end() - ));
    }
    }
    }

    运行结果:

    Match "Arline" at positions -
    Match " ate" at positions -
    Match " one" at positions -
    Match " orange" at positions -
    Match " Anita" at positions -
  12. sfa
  13. f
  14. a
  15. fda
  16. sdf
  17. af
  18. a
  19. fd
  20. af
  21. as
  22. fd
  23. asfd
  24. af
  25. da
  26. f
  27. df
  28. as
  29. fa
  30. sf
  31. asf
  32. a
  33. sf
  34. af
  35. asf