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 请按任意键继续. . .
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 请按任意键继续. . .
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 }
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 }
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 秒) - 正常终止