2011-01-03
JAVA初学者问题2import
修改了程序(猜想程序本意是要随机获取会员号),给出Demo,可运行看下:import java。util。ArrayList;import java。util。Arrays;import java。 util。HashMap;import java。util。List;import java。util。Map;import java。util。Scanner;public class Chapter03_1 {static Scanner input = new Scanner( );public static void main(String[] args) {in...全部
修改了程序(猜想程序本意是要随机获取会员号),给出Demo,可运行看下:import java。util。ArrayList;import java。util。Arrays;import java。
util。HashMap;import java。util。List;import java。util。Map;import java。util。Scanner;public class Chapter03_1 {static Scanner input = new Scanner( );public static void main(String[] args) { intln("我行我素购物系统 > 幸运抽奖"); int("请输入所有会员号(不同会员号请用\",\"分隔,会员号是4位长度的整数,如:7756,7757,7758):\n");String userIDs = xt();List userIDList = getUserIDList(userIDs);getLuckyGuy(userIDList, 10);// intln("测试接受char,请输入一个字符:");//try{//char a = nextChar();// intln("输入字符是: " + a);//}catch(Exception e){// intln("输入字符错误!");//}}/** * 解析输入的会员号 * @param userIDs * @return */private static List getUserIDList(String userIDs){if(null == userIDs || im()。
equals(""))return new ArrayList();return List( im()。split(","));}/** * 产生幸运客户 * @param userIDList * @param seed */private static void getLuckyGuy(List userIDList, int seed){if(null == userIDList || ze() == 0) return;Map usersMap = new HashMap();for(String userID : userIDList){if(null != userID && !""。
equals( im())){int lucyNumber = ( lueOf(userID)%1000)/100;//注意userID如果不是整数会产生异常usersMap。
put(lucyNumber, userID);}}while(true){int randomNumber = (int)(Math。random() * seed);if( ySet()。
contains(randomNumber)){ int("恭喜您! 会员 '" + t(randomNumber) + "' 是幸运客户,获得精美跑车一辆(玩具车)!\n"); intln("感谢其他客户的参与!");break;}}}/** * 获取一个字符 * @return */public static char nextChar(){String result = xt();if(result。
length() > 1){throw new IllegalArgumentException(result + " is not a char!");}return arAt(0);}}问题 1 答: int("恭喜您!\t"+suiJishu+"\t是幸运客户,获得精美跑车一辆(玩具车)!"); 这行代码输出的是suiJishu,不是huiYuanhao。
问题 2答:Math。random()产生的是一个带正号的 double 值,该值大于等于 0。0 且小于 1。0。Math。random()*10产生的也是个 double 值,该值大于等于 0。
0 且小于 10。0。(int)(Math。random()*10)前面的 (int) 是做强制类型转换,把 double 转换成 int ,此处会发生信息丢失,在 int 取值范围内只丢失小数部分。
问题 3 答:Scanner类是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器,没有提供返回char类型的方法。因为Scanner是final类,不可以去继承,可以自定义一个方法来扩展:public static char nextChar(){String result = xt();if(result。
length() > 1){throw new IllegalArgumentException(result + " is not a char!");}return arAt(0);}运行测试请把上面Demo中的注释代码行恢复即可。
在java语言中要理解char类型,需要了解Unicode字符集,char类型用UTF-16编码描述一个代码单元,是2个字节长不带符号的Unicode字符。还要了解的是字符(char)和字符串(String)的区别;两个char型运算时,自动转换为int型;建议全面学习下java的8种基本类型。
收起