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() + "
    ";
        }
        public static void main(String[] args) {
            List<InfiniteRecursion> list = new ArrayList<InfiniteRecursion>();
            for(int i=0; i<5; 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 = 0;
        private Formatter f = new Formatter(System.out);
        public final int ITEM_WIDTH = 15;
        public final int QTY_WIDTH = 5;
        public final int PRICE_WIDTH = 10;
        public final int PRICISION_FLOAT_WIDHT = 2;
        public final int PRICISION_String_WIDHT = 15;
        public final String TITLE_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
                + "s %" + PRICE_WIDTH + "s
    ";
        public final String PRICE_FORMAT = "%-" + ITEM_WIDTH + "."
                + PRICISION_String_WIDHT + "s %" + QTY_WIDTH + "d %" + PRICE_WIDTH
                + "." + PRICISION_FLOAT_WIDHT + "f
    "; 
        public final String TOTAL_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
                + "s %" + PRICE_WIDTH + "." + PRICISION_FLOAT_WIDHT + "f
    "; 
        
        //打印标题
        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, 4.25);
            receipt.print("Princess Peas", 3, 5.1);
            receipt.print("Three Bears Porridge", 1, 14.29);
            receipt.printTotal();
        }
    
    }

    运行结果:

    Item              Qty      Price
    ----              ---      -----
    Jack`s Magic Be     4       4.25
    Princess Peas       3       5.10
    Three Bears Por     1      14.29
    Tax                         1.42
                               -----
    Total                      25.06
  5. 第五题
    package net.mindview.strings;
    
    import java.util.Formatter;
    
    public class Receipt {
        private double total = 0;
        private Formatter f = new Formatter(System.out);
        public final int ITEM_WIDTH = 15;
        public final int QTY_WIDTH = 5;
        public final int PRICE_WIDTH = 10;
        public final int PRICISION_FLOAT_WIDHT = 2;
        public final int PRICISION_String_WIDHT = 15;
        public final String TITLE_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
                + "s %" + PRICE_WIDTH + "s
    ";
        public final String PRICE_FORMAT = "%-" + ITEM_WIDTH + "."
                + PRICISION_String_WIDHT + "s %" + QTY_WIDTH + "d %" + PRICE_WIDTH
                + "." + PRICISION_FLOAT_WIDHT + "f
    "; 
        public final String TOTAL_FORMAT = "%-" + ITEM_WIDTH + "s %" + QTY_WIDTH
                + "s %" + PRICE_WIDTH + "." + PRICISION_FLOAT_WIDHT + "f
    "; 
        
        //打印标题
        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, 4.25);
            receipt.print("Princess Peas", 3, 5.1);
            receipt.print("Three Bears Porridge", 1, 14.29);
            receipt.printTotal();
        }
    
    }

    运行结果:

    Item              Qty      Price
    ----              ---      -----
    Jack`s Magic Be     4       4.25
    Princess Peas       3       5.10
    Three Bears Por     1      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()-1) );
                }
                System.out.println("
    ");
            }
            
        }
    }

    输入参数:

    ^Java
    Breg.*
    n.ws+h(a|i)s
    s?
    s*
    s+
    s{4}
    s{1}.
    s{0,3}

    输出结果

    Match "Java" at positions 0-3
    
    
    
    
    Match "now has" at positions 5-11
    
    
    Match "" at positions 0--1
    Match "" at positions 1-0
    Match "" at positions 2-1
    Match "" at positions 3-2
    Match "" at positions 4-3
    Match "" at positions 5-4
    Match "" at positions 6-5
    Match "" at positions 7-6
    Match "" at positions 8-7
    Match "" at positions 9-8
    Match "" at positions 10-9
    Match "s" at positions 11-11
    Match "" at positions 12-11
    Match "" at positions 13-12
    Match "" at positions 14-13
    Match "" at positions 15-14
    Match "" at positions 16-15
    Match "" at positions 17-16
    Match "" at positions 18-17
    Match "" at positions 19-18
    Match "" at positions 20-19
    Match "" at positions 21-20
    Match "" at positions 22-21
    Match "" at positions 23-22
    Match "" at positions 24-23
    Match "" at positions 25-24
    Match "s" at positions 26-26
    Match "s" at positions 27-27
    Match "" at positions 28-27
    Match "" at positions 29-28
    Match "" at positions 30-29
    Match "s" at positions 31-31
    Match "" at positions 32-31
    
    
    
    
    Match "s" at positions 11-11
    Match "ss" at positions 26-27
    Match "s" at positions 31-31
    
    
    
    
    Match "s " at positions 11-12
    Match "ss" at positions 26-27
    
    
    Match "" at positions 0--1
    Match "" at positions 1-0
    Match "" at positions 2-1
    Match "" at positions 3-2
    Match "" at positions 4-3
    Match "" at positions 5-4
    Match "" at positions 6-5
    Match "" at positions 7-6
    Match "" at positions 8-7
    Match "" at positions 9-8
    Match "" at positions 10-9
    Match "s" at positions 11-11
    Match "" at positions 12-11
    Match "" at positions 13-12
    Match "" at positions 14-13
    Match "" at positions 15-14
    Match "" at positions 16-15
    Match "" at positions 17-16
    Match "" at positions 18-17
    Match "" at positions 19-18
    Match "" at positions 20-19
    Match "" at positions 21-20
    Match "" at positions 22-21
    Match "" at positions 23-22
    Match "" at positions 24-23
    Match "" at positions 25-24
    Match "ss" at positions 26-27
    Match "" at positions 28-27
    Match "" at positions 29-28
    Match "" at positions 30-29
    Match "s" at positions 31-31
    Match "" at positions 32-31
  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() - 1));
            }
        }
    }    

    运行结果:

    Match "Arline" at positions 0-5
    Match " ate" at positions 6-9
    Match " one" at positions 27-30
    Match " orange" at positions 31-37
    Match " Anita" at positions 44-49
  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
原文地址:https://www.cnblogs.com/ITPower/p/8658056.html