• java动手动脑数组


    实验任务一:阅读并运行示例PassArray.java.

    1)源代码

    package demo;

     

    //PassArray.java

    //Passing arrays and individual array elements to methods

     

    public class PassArray {

          

           public static void main(String[] args) {

                  int a[] = { 1, 2, 3, 4, 5 };

                  String output = "The values of the original array are: ";

     

                  for (int i = 0; i < a.length; i++)

                         output += "   " + a[i];

     

                  output += " Effects of passing array " + "element call-by-value: "

                                + "a[3] before modifyElement: " + a[3];

     

                  modifyElement(a[3]);

     

                  output += " a[3] after modifyElement: " + a[3];

     

                  output += " Effects of passing entire array by reference";

     

                  modifyArray(a); // array a passed call-by-reference

     

                  output += " The values of the modified array are: ";

     

                  for (int i = 0; i < a.length; i++)

                         output += "   " + a[i];

                 

                  System.out.println(output);

           }

     

           public static void modifyArray(int b[]) {

                  for (int j = 0; j < b.length; j++)

                         b[j] *= 2;

           }

     

           public static void modifyElement(int e) {

                  e *= 2;

           }

     

    }

     

    2)程序截图:

    使用引用传递时,方法中更改了数组元素的值,直接修改了原始的数组元素。 使用值传递时,方法体中修改的仅是原始数组元素的一个拷贝。

        

    实验任务二:阅读QiPan.java示例程序了解如何利用二维数组和循环语句绘制五子棋盘。

    源代码:

    package demo;

     

    import java.io.*;

     

    public class QiPan

    {

           //定义一个二维数组来充当棋盘

           private String[][] board;

           //定义棋盘的大小

           private static int BOARD_SIZE = 15;

           public void initBoard()

           {

                  //初始化棋盘数组

                  board = new String[BOARD_SIZE][BOARD_SIZE];

                  //把每个元素赋为"╋",用于在控制台画出棋盘

                  for (int i = 0 ; i < BOARD_SIZE ; i++)

                  {

                         for ( int j = 0 ; j < BOARD_SIZE ; j++)

                         {

                                board[i][j] = "╋";

                         }

                  }

           }

           //在控制台输出棋盘的方法

           public void printBoard()

           {

                  //打印每个数组元素

                  for (int i = 0 ; i < BOARD_SIZE ; i++)

                  {

                         for ( int j = 0 ; j < BOARD_SIZE ; j++)

                         {

                                //打印数组元素后不换行

                                System.out.print(board[i][j]);

                         }

                         //每打印完一行数组元素后输出一个换行符

                         System.out.print(" ");

                  }

           }

        public static void main(String[] args)throws Exception

        {

            QiPan gb = new QiPan();

                  gb.initBoard();

                  gb.printBoard();

                  //这是用于获取键盘输入的方法

                  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                  String inputStr = null;

                    System.out.println("请输入您下棋的座标,应以x,y的格式:");

                  //br.readLine():每当在键盘上输入一行内容按回车,刚输入的内容将被br读取到。

                  while ((inputStr = br.readLine()) != null)

                  {

                         //将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串

                         String[] posStrArr = inputStr.split(",");

                         //将2个字符串转换成用户下棋的座标

                         int xPos = Integer.parseInt(posStrArr[0]);

                         int yPos = Integer.parseInt(posStrArr[1]);

                         //把对应的数组元素赋为"●"。

                         gb.board[xPos - 1][yPos - 1] = "●";                           

                         /*

                          电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组。

                          还涉及

                                1.座标的有效性,只能是数字,不能超出棋盘范围

                                2.如果下的棋的点,不能重复下棋。

                                3.每次下棋后,需要扫描谁赢了

                          */

                         gb.printBoard();

                         System.out.println("请输入您下棋的座标,应以x,y的格式:");

                  }

        }

    }

    1)实验结果截图:

    实验任务三:请编写一个程序将一个整数转换为汉字读法字符串。比如“1123”转换为一千一百二十三更进一步,能否将数字表示的金额改为汉字表达?比如将123.52”转换为壹佰贰拾叁元伍角贰分

    1)程序设计思想:

    2)源代码:

    import java.util.Scanner;

    public class Money

    {

        private String[] A = {"零" , "一" , "二" , "三" , "四" ,

            "五" , "六" , "七" , "八" , "九"};

        private String[] B = {"十" , "百" , "千","万","十万","百万"};

        private String zhuanhua(String Str)

        {

            String result = "";

            int numL = Str.length();

            for (int i = 0 ; i < numL ; i++ )

            {

                int num = Str.charAt(i) - 48;

     

                if ( i != numL - 1 && num != 0)

                {

                    result += A[num] + B[numL - 2 - i];

                }

                else

                {

                    if(result.length()>0 && A[num].equals("零") && result.charAt(result.length()-1)=='零')

                        continue;

                    result += A[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)

        {      

            Money nr = new Money();

            Scanner in=new Scanner(System.in);

            System.out.println("请输入整数:");

            String num= in.next();

            System.out.println("转换后为:"+nr.zhuanhua(num));

        }

    }

    金额源代码:

    import java.util.Scanner;

    public class Money

    {

        private String[] A = {"零" , "壹" , "贰" , "弎" , "肆" ,

            "伍 ", "陆" , "柒" , "捌" , "玖"};

        private String[] B = {"拾" , "佰" , "千","万","十万","百万"};

        private String zhuanhua(String Str)

        {

            String result = "";

            int numL = Str.length();

            for (int i = 0 ; i < numL ; i++ )

            {

                int num = Str.charAt(i) - 48;

     

                if ( i != numL - 1 && num != 0)

                {

                    result += A[num] + B[numL - 2 - i];

                }

                else

                {

                    if(result.length()>0 && A[num].equals("零") && result.charAt(result.length()-1)=='零')

                        continue;

                    result += A[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)

        {      

            Money nr = new Money();

            Scanner in=new Scanner(System.in);

            System.out.println("请输入金额:");

            String num= in.next();

            System.out.println("转换后为:"+nr.zhuanhua(num)+"元");

        }

    }

    4)实验结果截图:

     

     

    实验任务四:大数

    (1)   源代码:

    package demo;

     

    import java.util.Scanner;

     

    public class BigNum{

            public static int[]add(int []a,int []b){

                int wei=0;

                int[]c=new int[a.length];

                for(int i=a.length-1;i>=0;i--)

                {

                    c[i]=a[i]+b[i]+wei;

                    if(c[i]<10)

                        wei=0;

                    else

                    {

                        c[i]=c[i]-10;

                        wei=1;

                    }

                }

                return c;

        }

            public static int []sub(int []a,int[]b,int w)

            {

                int wei=0;

                int[]c=new int[a.length];

                for(int i=a.length-1;i>=0;i--)

                {

                    if(w<=0)

                    {

                        c[i]=b[i]-a[i]-wei;

                        if(c[i]>=0)

                        {   wei=0;}

                        else

                        {

                            c[i]=c[i]+10;

                            wei=1;

                        }

                    }

                        else

                        {

                            c[i]=a[i]-b[i]-wei;

                            if(c[i]>=0)

                            {wei=0;}

                            else

                            {

                                c[i]=c[i]+10;

                                wei=1;

                            }

                     }

                 }

                    return c;

                }

                public static void main(String[]args){

                    int a[]=new int[100];

                    int b[]=new int[100];

                    int m=0;

                    int n=0;

                    int s=0;

                    int t=0;int u=0;

                    Scanner in=new Scanner(System.in);

                    System.out.println("请输入第一个数:");

                    String aa=in.next();

                    System.out.println("请输入第二个数:");

                    String bb=in.next();

                    m=a.length-aa.length();

                    n=b.length-bb.length();

                    if(aa.length()>bb.length())

                    {

                        u=1;

                    }

                    else if (aa.length()<bb.length())

                    {

                        u=-1;

                    }

                    else

                        {u = aa.compareTo(bb);}

                    for (int i = 0; i < aa.length(); i++)

                    {

                        a[m++] = aa.charAt(i) - 48;

                    }

                    for (int j = 0; j < bb.length(); j++)

                    {

                        b[n++] = bb.charAt(j) - 48;

                    }

                        int[] c = BigNum.add(a, b);

                        for (int k = 0; k < c.length; k++)

                        {

                            if (c[k] > 0)

                            {

                            s = k;

                            break;

                            }

                        }

                        System.out.print("相加的结果为:");

                        for (int i = s; i < c.length; i++) {

                        System.out.print(c[i]);

                        }

                        System.out.println();

                        int[] d = BigNum.sub(a, b, u);

                        for (int k = 0; k < d.length; k++)

                        {

                            if (d[k] > 0)

                            {

                            t = k;

                            break;

                            }

                        }

                        System.out.print("相减的结果为:");

                        if (u < 0)

                        System.out.print("-");

                        for (int i = t; i < d.length; i++)

                        {

                            System.out.print(d[i]);

                        }

                        System.out.println();

                        System.out.println();

                        System.out.println();

                        System.out.println();

     

                        }

    }

    (2)    程序截图

     

    实验任务五:随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中。

    (1)    程序设计思路:先定义一个数组,用random产生随机数,利用for循环将随机数导入数组,在输出即可。

    (2)    源代码:

    package demo;

     

    import javax.swing.JOptionPane;

    public class RandomAdd {

        public static void main(String[]args){

            int []a=new int[10];

            int sum=0;

            String output = "10个随机数为 ";

            for(int i=0;i<a.length;i++)

            {

                int temp=(int)(Math.random()*100);

                a[i]=temp;

                output+=" "+a[i]+" ";

                sum+=a[i];

            }

            output+="随机数和为:"+sum;

             JOptionPane.showMessageDialog( null,output,"结果",

                     JOptionPane.INFORMATION_MESSAGE );

        }

        

    }

    (3)    流程图:

    (4)程序截图:

     

    (5)编程总结:学会了利用for循环将随机数赋给数组,以及数组的遍历输出。在遇到问题时 逐步分析,将大化小,注重流程图和思路。

  • 相关阅读:
    Maven的声明周期(Lifecycle )和命令(Phase)
    Java并发之线程异常捕获
    Java并发之需要了解但不能太依赖的东东
    ejs使用
    node.js BootStrap安装
    div+css关于overflow 动态滚动效果
    myBatis 参数配置
    jQuery Ajax请求提交 后台getParameter接收不到数据
    mysql+mybatis 插入可递增字段库表操作
    CSS浮动讲解好文章推荐
  • 原文地址:https://www.cnblogs.com/ylx111/p/6035833.html
Copyright © 2020-2023  润新知