Java数组课后作业
1.运行TestArrays.java,了解Arrays中的一些重要方法的用法。
Arrays.equals(a 1, a2):判断数组是否相等。
int[] b = Arrays.copyOf(a, 6):将a数组赋给b数组,长度为6。
Arrays.fill(b , 2, 4 , 1):将b数组的第3个元素(包括)到第5个元素(不包括)赋为1。
Arrays.sort(b):对b数组进行排序。
2.请编写一个程序将一个整数转换为汉字读法字符串。比如“1123”转换为“一千一百二十三”。
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.随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中。
设计思路:利用随机数算法产生10个随机数,并让它们累加。
程序流程图:
源代码:
package test; import javax.swing.JOptionPane; public class ArraySum{ public static void main(String[] args){ int[] array=new int[10];//定义一个数组,长度为10。 int result=0; //定义一个变量初值为0。 String output=""; //随机生成一个100以内的数,填充数组。 for(int i=0;i<array.length;i++) array[i]=(int)(Math.random()*100); //将数组元素输出。 output+="随机生成的十个数是:"+"\n"; for(int i=0;i<array.length;i++) output+=array[i]+" "; output+="\n";//换行 //将数组元素相加。 for(int i=0;i<array.length;i++) result+=array[i]; output+="十个数相加等于:"+"\n"+result; //以消息框的形式输出。 JOptionPane.showMessageDialog(null, output, "输出",JOptionPane.INFORMATION_MESSAGE); } }
结果截图: