数组课后作业
1、随机产生十个数,并计算和
代码:
import javax.swing.*; public class SuiJiShu{ public static void main(String[] args){ String output = ""; int num = 0; int n[] = new int[10]; for(int i = 0;i < n.length;i++) { n[i] = (int)(Math.random()*100+1);//从1到100中产生随机数 } output +="Subscript\tValue\n"; for(int i = 0;i < n.length;i++) { output += i + "\t" + n[i] + "\n"; num += n[i]; } JTextArea outputArea = new JTextArea(11,10); outputArea.setText(output); JOptionPane.showMessageDialog(null,outputArea,"Initializing an SuiJiShu with a Declaration",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null,num,"数组中所有元素的和:",JOptionPane.INFORMATION_MESSAGE); System.exit(0); } }
程序流程图:
结果截图:
程序设计思想:
先定义一个空的数组,然后用main.random方法产生随机数,用for循环把数插入到string对象中,最后for循环计算和。
2、写一个程序将整数转换成汉字的读法
代码:
public class Num2Rmb { private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" , "伍" , "陆" , "柒" , "捌" , "玖"}; private String[] unitArr = {"十" , "百" , "千","万","十万","百万"}; /** * 把一个四位的数字字符串变成汉字字符串 * @param numStr 需要被转换的四位的数字字符串 * @return 四位的数字字符串被转换成的汉字字符串。 */ private String toHanStr(String numStr) { String result = ""; int numLen = numStr.length(); //依次遍历数字字符串的每一位数字 for (int i = 0 ; i < numLen ; i++ ) { //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48 //因此把char型数字减去48得到int型数字,例如'4'被转换成4。 int num = numStr.charAt(i) - 48; //如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十) if ( i != numLen - 1 && num != 0) { result += hanArr[num] + unitArr[numLen - 2 - i]; } //否则不要添加单位 else { //上一个数是否为“零”,不为“零”时就添加 if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零') continue; result += hanArr[num]; } } //只有个位数,直接返回 if(result.length()==1) return result; int index=result.length()-1; while(result.charAt(index)=='零'){ index--; } if(index!=result.length()-1) return result.substring(0,index+1); else { return result; } } public static void main(String[] args) { Num2Rmb nr = new Num2Rmb(); System.out.println("只支持整数(0~百万)"); //测试把一个四位的数字字符串变成汉字字符串 System.out.println(nr.toHanStr("0")); System.out.println(nr.toHanStr("1")); System.out.println(nr.toHanStr("10")); System.out.println(nr.toHanStr("15")); System.out.println(nr.toHanStr("110")); System.out.println(nr.toHanStr("123")); System.out.println(nr.toHanStr("105")); System.out.println(nr.toHanStr("1000")); System.out.println(nr.toHanStr("1100")); System.out.println(nr.toHanStr("1110")); System.out.println(nr.toHanStr("1005")); System.out.println(nr.toHanStr("1105")); System.out.println(nr.toHanStr("1111")); System.out.println(nr.toHanStr("10000")); System.out.println(nr.toHanStr("10001")); System.out.println(nr.toHanStr("10011")); System.out.println(nr.toHanStr("10111")); System.out.println(nr.toHanStr("11111")); System.out.println(nr.toHanStr("11000")); System.out.println(nr.toHanStr("11100")); System.out.println(nr.toHanStr("11110")); System.out.println(nr.toHanStr("101110")); System.out.println(nr.toHanStr("1001110")); } }
验证结果截图:
3、阅读程序WhatDoesThisDo.java, 解释程序所完成的功能。
public class WhatDoesThisDo { static int result;//int型静态变量 static String output; public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//初始化十个数 result = whatIsThis(a, a.length);//迭代调用 output = "Result is: " + result; System.out.println(output); } public static int whatIsThis(int b[], int size) { if (size == 1) return b[0]; else return b[size - 1] + whatIsThis(b, size - 1);//迭代调用实现由最后一个数到第一个数的相加 } }
验证截图:
4、阅读程序WhatDoesThisDo2.java, 解释程序所完成的功能。
代码:
public class WhatDoesThisDo2 { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//初始化十个数 StringBuilder sbBuilder=new StringBuilder();//创建一个StringBuilder对象 someFunction(a, 0, sbBuilder);//调用函数someFunction System.out.println(sbBuilder);//输出 } public static void someFunction(int b[], int x, StringBuilder out) { if (x < b.length) { someFunction(b, x + 1, out);//迭代调用函数实现倒序输入 out.append(b[x] + " ");//在每一个后面后继添加 } } }
验证截图: