3.8 《Java疯狂讲义》第四章作业

1、循环输出99乘法表:

 1 class Test1
 2 {
 3     public static void main(String[] args) 
 4     {
 5         for(int row=1;row<=9;row++)
 6         {
 7             for(int col=1;col<=row;col++)
 8             {
 9                 System.out.print(row+"×"+col+"="+row*col);
10                 if(col==row)
11                     System.out.println();
12                 else
13                     System.out.print(',');
14             }
15         }
16     }
17 }
18 1×1=1
19 2×1=2,2×2=4
20 3×1=3,3×2=6,3×3=9
21 4×1=4,4×2=8,4×3=12,4×4=16
22 5×1=5,5×2=10,5×3=15,5×4=20,5×5=25
23 6×1=6,6×2=12,6×3=18,6×4=24,6×5=30,6×6=36
24 7×1=7,7×2=14,7×3=21,7×4=28,7×5=35,7×6=42,7×7=49
25 8×1=8,8×2=16,8×3=24,8×4=32,8×5=40,8×6=48,8×7=56,8×8=64
26 9×1=9,9×2=18,9×3=27,9×4=36,9×5=45,9×6=54,9×7=63,9×8=72,9×9=81
27 请按任意键继续. . .
View Code

 2、输出等腰三角形

 1 import java.util.Scanner;
 2 class Test2 
 3 {
 4     public static void main(String[] args) 
 5     {
 6         Scanner sc=new Scanner(System.in);
 7         System.out.println("请输入等腰三角形的行数:");
 8         int row=sc.nextInt();
 9         for(int i=1;i<=row;i++)
10         {
11             for(int j=1;j<=row-i;j++)
12                 System.out.print(' ');
13             for(int k=1;k<=2*i-1;k++)
14                 System.out.print('*');
15             System.out.println();
16         }
17     }
18 }
19 请输入等腰三角形的行数:
20 7
21       *
22      ***
23     *****
24    *******
25   *********
26  ***********
27 *************
28 请按任意键继续. . .
View Code

 3、循环画出近似园:

由于显示屏横向间隔和纵向间隔不一样,大约1:2,所以横向和纵向的长度比例不一样

 1 import java.util.Scanner;
 2 class  Test3
 3 {
 4     public static void main(String[] args) 
 5     {
 6         System.out.println("请输入圆的半径(整数):");
 7         Scanner sc=new Scanner(System.in);
 8         float r=sc.nextFloat();
 9         for(int row=1;row<=2*r;row++)
10         {
11             for(int col=1;col<=2*r*3;col++)
12             {
13                 double y=(double)row;
14                 long x1=Math.round((r+0.5+Math.sqrt(r*r-Math.pow(y-r-0.5,2)))*2);
15                 long x2=Math.round((r+0.5-Math.sqrt(r*r-Math.pow(y-r-0.5,2)))*2);
16                 if(col==x1||col==x2)
17                     System.out.print('*');
18                 else
19                     System.out.print(' ');
20                 
21             }
22             System.out.println();
23         }
24     }
25 }
View Code

 4、实现按字符数截取字符串子串,一个英文字符当一个字节,汉字当两个字节

 1 public class substring
 2     {
 3     public static String getSubstring(String s, int start, int end)
 4         {
 5         String  r = new String(s);
 6         String result = "";
 7         int leneed = end - start; 
 8         int length = 0;
 9         int i = start;
10 
11         //不含中文
12         if(r.length() == r.getBytes().length)
13             return s.substring(start, end);
14 
15         //含中文
16         else
17             {
18             while(i<end && length <= leneed){
19                 if(isHan(r.charAt(i))){
20                     length += 2;
21                 }
22                 else
23                     {
24                     length += 1;
25                 }
26                 result = result + r.charAt(i);
27                 i += 1;
28                 }
29             return result;
30             }
31 
32         }
33 
34         public static boolean isHan(char a){
35          return a >= 0x4E00 && a <= 0x9FA5; 
36     }
37 
38     public static void main(String[] args){
39         String test = "中a国bc中国中国";
40         System.out.println(getSubstring(test, 1, 10));
41     }
42 }
View Code

 5、将浮点数转换为人名币读法字符串。

 1 import java.util.Arrays;
 2 public class Test5
 3 {
 4     private String[] hanArr=new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾"};
 5     private String[] unitArr=new String[]{"十","百","千","角","分"};
 6 
 7     /*
 8      *把一个浮点数分成整数部分和小数部分
 9      *@param num 需要分解的浮点数
10      *@return 分解出来的小数部分和整数部分,第一个元素是整数部分,第二个元素是小数部分
11      */
12     private String[] divide(double num)
13     {
14         //将一个浮点数强制转化为long型,得到它的整数部分
15         var zheng=(long) num;
16         //获取小数部分(两位)
17         var xiao=Math.round((num-zheng)*100);
18         return new String[]{zheng+"",String.valueOf(xiao)};
19     }
20 
21     private String toHanStr(String numStr,String numStr1)
22     {
23         /*
24          *把一个四位数的字符串的每一位变成汉字字符串
25          *@param numStr 需要转换的四位整数数字字符串
26          *@param numStr1 需要转换的两位小数数字字符串
27          *@return 四位数字字符串转换的汉字字符串
28          */
29          var result="";
30          int numlen=numStr.length();
31          //依次遍历字符串的每一个数字
32          for(int i=0;i<numlen;i++)
33         {
34             //把char型数字转为int型数字,因为他们的ASCII码相差48
35             //把cahr类型的数字减去48就得到int型数字,例如‘4’转换为4
36             var num=numStr.charAt(i)-48;
37                 //charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
38             if(i!=numlen-1&&num!=0)
39             {
40                 result+=hanArr[num]+unitArr[numlen-2-i];
41             }
42             else
43             {
44                 result+=hanArr[num];
45             }
46         }
47         
48         int numlen1=numStr1.length();
49          //依次遍历字符串的每一个数字
50          for(int i=0;i<numlen1;i++)
51         {
52             //把char型数字转为int型数字,因为他们的ASCII码相差48
53             //把cahr类型的数字减去48就得到int型数字,例如‘4’转换为4
54             var num=numStr1.charAt(i)-48;
55                 //charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
56                 result+=hanArr[num]+unitArr[3+i];
57 
58         }
59         return result;
60 
61     }
62     public static void main(String[] args) 
63     {
64         var nr=new Test5();
65         String[] Str;
66         Str=nr.divide(2346.489);
67         //测试把一个浮点数分解成整数部分和小数部分
68         System.out.println(Str[0]+Str[1]);
69         //测试把一个四位数字字符串转换为汉字字符串
70         System.out.println(nr.toHanStr(Str[0],Str[1]));
71     }
72 }
73 ---------- 运行Java捕获输出窗 ----------
74 234649
75 贰千叁百肆十陆肆角玖分
76 
77 输出完成 (耗时 0 秒) - 正常终止
View Code
posted @ 2020-02-25 11:02  小新和风间  阅读(149)  评论(0编辑  收藏  举报