课堂作业(数组)

一、阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结。

  运行结果:

答:按引用传递与按值传送数组类型方法参数的最大关键在于:
  使用前者时,如果方法中有代码更改了数组元素的值,实际上是直接修改了原始的数组元素。
  使用后者则没有这个问题,方法体中修改的仅是原始数组元素的一个拷贝。

二、请编写一个程序将将数字表示的金额改为汉字表达


import javax.swing.JOptionPane;


public class NumRmb
{
 private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
  "伍" , "陆" , "柒" , "捌" , "玖"};
 private String[] unitArr = {"十" , "百" , "千","万","十万","百万"};


 


 /**
  * 把一个四位的数字字符串变成汉字字符串
  * @param numStr 需要被转换的四位的数字字符串
  * @return 四位的数字字符串被转换成的汉字字符串。
  */
 private String toHanStr(String numStr)
 {
  String result = "";int i = 0;
  int numLen = numStr.length();
  //依次遍历数字字符串的每一位数字
  for ( ; i < numLen ; i++ )
  { 
   if((i==numLen-1)&&(numStr.charAt(i)!='.')){
   //把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
   //因此把char型数字减去48得到int型数字,例如'4'被转换成4。
    for(i=0;i<numLen;i++){
    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];}
     }
    result +="元";
   }
   else if(numStr.charAt(i)=='.'){
    for(int j=0;j<i;j++)
    {
     int num = numStr.charAt(j) - 48;
      if ( j != i - 1 && num != 0){
      result += hanArr[num] + unitArr[i -2- j];
       }
      else{
      if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
       continue;
      result += hanArr[num];
       }
    }
    if(i<numStr.length())
    {int num = numStr.charAt(i+1) - 48;result +="元"+hanArr[num]+"角";
     num = numStr.charAt(i+2) - 48;result +=hanArr[num]+"分";}
     break;
   }
  
  }
    
  
 
  //只有个位数,直接返回
  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)
    {       
  NumRmb nr = new NumRmb();
  String num=JOptionPane.showInputDialog("输入钱数");
  JOptionPane.showMessageDialog(null, nr.toHanStr(num),"转化后",JOptionPane.CLOSED_OPTION);
  
    }
}


三、十个随机数求和 

1、设计思想:

创建类,定义方法产生随机数,定义方法求和,主方法调用,并输出结果

2、流程图

3、源代码

 1 import javax.swing.*;
 2 public class Suijihe {
 3     public static void main(String[]args){
 4         int[] num=new int[10];String s="";
 5         suiji(num);
 6         for(int i=0;i<num.length;i++)
 7             s+=num[i]+" ";
 8         int sum=qiuhe(num);
 9         JOptionPane.showMessageDialog(null,s+"
"+sum,"一到十之间十个随机数和",JOptionPane.CLOSED_OPTION);
10     }
11     
12     public static void suiji(int a[]){
13         for(int i=0;i<a.length;i++){
14             a[i]=(int)(1+Math.random()*10);
15         }
16     }
17     
18     public static int qiuhe(int a[]){
19         int sum=0;
20         for(int i=0;i<a.length;i++)
21             sum+=a[i];
22         return sum;
23     }
24 }

4、运行结果截图

 

原文地址:https://www.cnblogs.com/ghs1065248758/p/6034841.html