Java 数组

一、引用传递与数值传递

 1 // PassArray.java
 2 // Passing arrays and individual array elements to methods
 3 
 4 public class PassArray {
 5     
 6     public static void main(String[] args) {
 7         int a[] = { 1, 2, 3, 4, 5 };
 8         String output = "The values of the original array are:\n";
 9 
10         for (int i = 0; i < a.length; i++)
11             output += "   " + a[i];
12 
13         output += "\n\nEffects of passing array " + "element call-by-value:\n"
14                 + "a[3] before modifyElement: " + a[3];
15 
16         modifyElement(a[3]);
17 
18         output += "\na[3] after modifyElement: " + a[3];
19 
20         output += "\n Effects of passing entire array by reference";
21 
22         modifyArray(a); // array a passed call-by-reference
23 
24         output += "\n\nThe values of the modified array are:\n";
25 
26         for (int i = 0; i < a.length; i++)
27             output += "   " + a[i];
28         
29         System.out.println(output);
30     }
31     public static void modifyArray(int b[]) {
32         for (int j = 0; j < b.length; j++)
33             b[j] *= 2;
34     }
35     public static void modifyElement(int e) {
36         e *= 2;
37     }
38 }

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

 

二、浮点数转化为人民币读法。比如将“¥123.52”转换为“壹佰贰拾叁元伍角贰分”。

 1 //浮点数转化为人民币读法
 2 //9999.99元以内
 3 import java.util.*;
 4 public class HanZi {
 5     private static char rmbArr[]={'零' , '壹' , '贰' , '叁' , '肆' , '伍' , '陆' , '柒' , '捌' , '玖'};
 6     private static char danweiArr[]={'十' , '百' , '千'};
 7     private static char yjfArr[]={'圆','角','分'};
 8     @SuppressWarnings("resource")
 9     public static void main(String[] args) {
10         Scanner in=new Scanner(System.in);
11         System.out.println("输入0-9999.99之间的小数(必须输入两位小数!):");
12         String rmbInput=in.nextLine();
13         char rmbOutput[]=new char[12];
14         translate(rmbInput,rmbOutput);
15         System.out.println("人民币读数:");
16         System.out.println(rmbOutput);
17     }
18     public static void translate(String x,char rmb[]){
19         int i,j,k;
20         char qianArr[]=x.substring(0, x.indexOf('.')).toCharArray();
21         char houArr[]=x.substring(x.indexOf('.')+1).toCharArray();
22         int len=qianArr.length;
23         int qArr[]=new int[len];
24         int hArr[]=new int[2];
25         for(i=0;i<len;i++){
26             qArr[i]=qianArr[i]-48;
27         }
28         for(i=0;i<2;i++){
29             hArr[i]=houArr[i]-48;
30         }
31         for(i=-1,j=len-2,k=-1;j>=0;j--){
32             rmb[++k]=rmbArr[qArr[++i]];
33             rmb[++k]=danweiArr[j];
34             if(j==0)
35                 rmb[++k]=rmbArr[qArr[++i]];
36         }
37         for(i=0;i<2;i++){
38             rmb[++k]=yjfArr[i];
39             rmb[++k]=rmbArr[hArr[i]];
40         }
41         rmb[++k]=yjfArr[i];
42         k++;
43         for(;k<12;k++){
44             rmb[k]=' ';
45         }
46     }
47 }

三、随机生成十个整数并求和,消息框显示。

 1 import javax.swing.JOptionPane;
 2 public class RandomArraySum {
 3 
 4     public static void main(String[] args) {
 5         int []array=new int[10];
 6         int sum=0;
 7         String output="";
 8         for(int i=0;i<10;i++){
 9             array[i]=(int)(Math.random()*100);
10             sum+=array[i];
11         }
12         output+="随机生成的十个数是:"+"\n";
13         for(int i=0;i<10;i++){
14             output+=array[i]+" ";
15         }
16         output+="\n";
17         output+="十个数相加等于:"+"\n"+sum;
18         JOptionPane.showMessageDialog(null, output,"输出",JOptionPane.INFORMATION_MESSAGE);
19     }
20 
21 }

 

四、大数相加

import java.util.*;
public class BigInt {
    public static void main(String[] args) {
        int a[]=null,b[]=null,c[]=null;
        System.out.println("输入第一个正整数:");
        a=input(a); 
        System.out.println("输入第二个正整数:");
        b=input(b);
        c=add(a,b);
        System.out.println("两数之和:");
        output(c);
    
    }
    public static int[] input(int number[]){
        @SuppressWarnings("resource")
        Scanner in=new Scanner(System.in);
        String i=in.nextLine();
        char ip[]=i.toCharArray();
        number=new int[ip.length];
        for(int k=0;k<ip.length;k++){
            number[k]=ip[k]-48;
        }
        return number;
    }
    public static int[] add(int x[],int y[]){
        int push=0;    //进位
        int l[]=y.length>x.length?y:x;
        int min[]=y.length>x.length?x:y;
        int r[]=new int[l.length];
        for(int i=l.length-1,j=min.length;i>=l.length-min.length;i--)
            r[i]=min[--j];
        int result[]=new int[l.length+1];
        int len=result.length;
        int left=l.length-1;
        int right=r.length-1;
        while(right>=0&&left>=0){
            result[--len]=(l[left]+r[right]+push)%10;
            if(l[left]+r[right]+push>=10)
                {push=1;}
            else
                {push=0;}
            right--; left--;
        }    
        if(push==1)
            result[--len]+=push;
        return result;
    }
    public static void output(int x[]){
        String o="";
        for(int i=0;i<x.length;i++){
            if(i==0&&x[i]==0)
                continue;
            o+=x[i];
        }
        System.out.print(o);
    }
}

 

posted @ 2016-11-06 17:15  遗风遗风丶  阅读(167)  评论(0编辑  收藏  举报