StringBuffer 的一个骗子

来源:互联网 发布:唐山直销软件 编辑:程序博客网 时间:2024/04/30 23:43
package stringProblem;import java.util.Random;/* * p 49 */public class Rhymes {    private static Random rnd = new Random();    public static void main(String args[]) {StringBuffer word = null;switch (rnd.nextInt(2)) {case 1:    word = new StringBuffer('P');case 2:    word = new StringBuffer('G');default:    word = new StringBuffer('M');}word.append('a');word.append('i');word.append('n');System.out.println(word);test();test2();   }    // 这是满足上面要求一个更加优雅的代码     public static void test() {System.out.println("PGM".charAt(rnd.nextInt(3))+"ain");    }    // 来个更加经典的    public static  void test2() {String a[] = {"Main","Pain","Gain"};System.out.println(randomElement(a));    }    private static String randomElement(String[]a) {return a[rnd.nextInt(a.length)];    }}/* *对于上面的程序有三处错误 *1.random.nextInt(2) 只会返回  0 ,1,所以永远达不到 2 *2.switch case 中没有 break;最后会返回最后一个case *3.对于 StringBuffer 中并没有 new StringBuffer(char)的构造,只有 *StringBuffer(String) StringBuffer(int),所以会将 char 转成其相应的 *int 值 ,所以上面会输出 ain   * */

原创粉丝点击