第四章的联系基本都是书中例子的加强,由于比较多我就用其作为一天的blog。不知不觉我已经写blog写了半个多月,加油~~~~呵呵
1.实现substring的方法,但要求按字节截取,而不是String的substring按字符截取。
- public class SubString {
- public static String getSubString(String str, int begin, int end) {
- byte[] c = str.getBytes();
- byte[] c2 = new byte[end - begin + 1];
- int j = 0;
- for (int i = begin; i < end + 1; i++) {
- c2[j] = c[i];
- j++;
- }
- String sub=new String(c2);
- return sub;
- }
- public static void main(String[] args) {
- System.out.println(getSubString("中国abc", 2, 4));
- }
- }
这是按字节截取的字符串,由于中文占2个字节,如上例你截取1到4会出现乱码的文字。
2.浮点数人民币读法eg.1006.333
- public static String[] divide(double num) {
-
- long zheng = (long) num;
-
- long xiao = Math.round((num - zheng) * 100);
-
- String xiaostr;
- if (xiao > 10) {
- xiaostr = String.valueOf(xiao);
- } else {
- xiaostr = "0" + String.valueOf(xiao);
- }
- return new String[]{zheng + "", xiaostr};
- }
- private String toHanStr(double inputNum) {
- String[] numStrs = divide(inputNum);
- String numStr1 = numStrs[0];
- String result = "";
- int numLen1 = numStr1.length();
- int oldNum = -1;
-
- for (int i = 0; i < numLen1; i++) {
-
-
- int num = numStr1.charAt(i) - 48;
-
- if (i != numLen1 - 1 && num != 0) {
- result += hanArr[num] + unitArr[numLen1 - 2 - i];
- }
-
- else {
- if (oldNum == 0) {
- result += hanArr[num];
- }
- oldNum = num;
- }
- }
- result += "元";
- String numStr2 = numStrs[1];
- int numLen2 = numStr2.length();
- for (int i = 0; i < numLen2; i++) {
- int num = numStr2.charAt(i) - 48;
- if (i != numLen2 && num != 0) {
- result += hanArr[num] + unitArr2[i];
- }
- }
- return result;
- }
- public static void main(String[] args) {
- Num2RmbPlus nr = new Num2RmbPlus();
- System.out.println(nr.toHanStr(01006.303));
- }
- }
这题要细心注意各种细节,数字读起来更口语话。
3.编写控制台五子棋
电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。
还涉及
1.座标的有效性,只能是数字,不能超出棋盘范围
2.如果下的棋的点,不能重复下棋。
3.每次下棋后,需要扫描谁赢了