• 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)源代码:

    package demo;

    import java.util.Scanner;

    public class ZhuanHuan {

           private String[] a={"","","","","","","","","",""};

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

           private String[] c={"","",""};

           

           private String Change(String str)

           {

            String result="";

            int numLen=str.length();

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

            {

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

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

            {

            result+=a[num]+b[numLen-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[])

           {

            ZhuanHuan nr=new ZhuanHuan();

            Scanner in=new Scanner(System.in);

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

            String x=in.next();

            System.out.print("转换后为:"+nr.Change(x));

           }

    }

    进一步,金额的源代码:

    package demo;

    import java.util.Scanner;

    public class ZhuanHuan {

           private String[] a={"","","","","","","","","",""};

           private String[] b={"","","",""};

           private String[] c={"","",""};

           

           private String Change(String str)

           {

            String result="";

            int p=0;

            int numLen=str.length();

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

            {

            if(str.charAt(i)=='.')

            {

            p=i;

            break;

            }

            }

            for(int i=0;i<p;i++){

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

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

            {

            result+=a[num]+b[p-2-i];

            }

            else

            {

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

            continue;

            result+=a[num];

            }

            }

            result+=c[0];

            for(int i=p+1;i<numLen;i++)

            {

            int num1=str.charAt(i)-48;

            if(num1!=0)

            {

            result+=a[num1]+c[numLen-p-2];

            }

            else

            result+=a[num1];

            p--;

            }

            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[])

           {

            ZhuanHuan nr=new ZhuanHuan();

            Scanner in=new Scanner(System.in);

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

            String x=in.next();

            System.out.print("转换后为:"+nr.Change(x));

           }

    }

    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 ArrayAdd {

           public static void main(String args[]){

            int []a=new int[10];

            int sum=0;

            String str="10个随机数为:"+" ";

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

            {

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

            a[i]=m;

            str+=a[i]+" ";

            sum+=a[i];

            }

            str+="随机数的和为:"+sum;

            JOptionPane.showMessageDialog(null,str,"结果",JOptionPane.INFORMATION_MESSAGE);

           }

    }

    程序截图:

     

    5)编程总结:学会了利用循环将随机数赋给数组,然后计算数组元素的和,遍历并输出,把问题从大化小,由繁化简,逐步分析,完成项目。

  • 相关阅读:
    洛谷 P1111 修复公路
    洛谷 P2320 [HNOI2006]鬼谷子的钱袋
    洛谷 P2023 [AHOI2009]维护序列
    洛谷 P1341 无序字母对(欧拉回路)
    洛谷 P1330 封锁阳光大学
    javaweb学习总结(二十三)——jsp自定义标签开发入门
    javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    javaweb学习总结(二十一)——JavaWeb的两种开发模式
    javaweb学习总结(二十)——JavaBean总结
    javaweb学习总结(十九)——JSP标签
  • 原文地址:https://www.cnblogs.com/jokerr/p/6036405.html
Copyright © 2020-2023  润新知