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:\n";

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

output += "   " + a[i];

output += "\n\nEffects of passing array " + "element call-by-value:\n"

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

modifyElement(a[3]);

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

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

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

output += "\n\nThe values of the modified array are:\n";

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("\n");

}

}

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个随机数为:"+"\n";

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

{

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

a[i]=m;

str+=a[i]+"\n";

sum+=a[i];

}

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

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

}

}

程序截图:

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

时间: 2024-10-13 07:03:30

java课堂动手动脑的相关文章

Java课堂动手动脑-截图集锦

课堂实践性问题 没有数据类型,名称与类名相同,没有返回值 类本身有自定义的构造方法,调用时应有参数,这时系统不再使用默认构造方法 类字段初始化顺序 1.执行类成员定义时指定的默认值或累的初始化块,执行哪一个看哪一个排在前面. 2.执行类的构造函数 动手动脑问题(类之间继承,创建子类对象导致父类初始化块的执行) 静态初始化执行顺序 1.静态初始化块只执行一次 2.创建子类的对象时,父类的初始化块也会执行 静态方法访问实例成员变量如下:

java课堂 动手动脑3

(1) 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { public static void main(String[] args) { // TODO Auto-generated method stub InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field); obj=new Initializ

Java课堂 动手动脑5

1.了解棋盘打印:利用二维数组输出一个15*15的棋盘,棋盘的原素为"+",就是输出一个横纵都是15个"+"的二维数组,然后再以坐标形式输入棋子"●",替换掉原来棋盘里的"+".再编写代码. 电脑随机生成2个整数,作为电脑下棋的座标,赋给board数组.还涉及1.座标的有效性,只能是数字,不能超出棋盘范围2.如果下的棋的点,不能重复下棋.3.每次下棋后,需要扫描谁赢了 代码如下: import java.io.*; publi

Java课堂 动手动脑6

一.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d;d=m;d=(Dog)m;d=c;c=(Cat)m; 先进行自我判断, 1.代码: class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void main(String args[]) { Mammal m; Dog d=new Dog(); Cat

Java课堂动手动脑--方法

1.查看JDK文档 System.out.println方法重载 1 println 2 public void println() 3 Terminates the current line by writing the line separator string. The line separator string is defined by the system property line.separator, and is not necessarily a single newline

JAVA课堂-动手动脑1

一.Enum:一般用来表示一组相同类型的常量.对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用”==”来替换equals,枚举对象里面的值都必须是唯一的. 代码: public class EnumTest {      public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE;//s和t引用同一个对象? System.out.println(s==t);  ////是原始数据

java课堂动手动脑总结

java有8种基本数据类型:byte,int,short,long,boolean,char,float,double. 对应的为:Byte,Int,Short,Long,Boolean,Charecter,Float,Double.其中boolean是逻辑型,char是文本型,byte,short,int,long是整数型,float,double是浮点型. byte:1字节 -128~127      short:2字节  -2*15~2*15-1    int:4字节   -2*31  ~

java多态动手动脑

实验任务一:多态实现ATM工作原理 1)源代码: package demo; import java.util.Scanner; class A{ String name; String date; String mima; int yu; String kahao; public A(String name,String date,String mima,int yu,String kahao) { this.name=name; this.date=date; this.mima=mima;

java的动手动脑10月20日

(1)动手动脑 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { /*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubInitializeBlockClass obj=new InitializeBlockClass();System.out.println(obj.field)