ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-06-04 14:07:06  阅读:179  来源: 互联网

标签:java String FORMAT positions WIDTH 第四版 习题 public Match


  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=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\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, 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\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, 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("\n");
            }
            
        }
    }

    输入参数:

    ^Java
    \Breg.*
    n.w\s+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

标签:java,String,FORMAT,positions,WIDTH,第四版,习题,public,Match
来源: https://blog.51cto.com/u_15091061/2856404

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有