java动脑公开课_java课堂动手动脑
實(shí)驗(yàn)任務(wù)一:閱讀并運(yùn)行示例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)程序截圖:
使用引用傳遞時(shí),方法中更改了數(shù)組元素的值,直接修改了原始的數(shù)組元素。 使用值傳遞時(shí),方法體中修改的僅是原始數(shù)組元素的一個(gè)拷貝。
實(shí)驗(yàn)任務(wù)二:閱讀QiPan.java示例程序了解如何利用二維數(shù)組和循環(huán)語句繪制五子棋盤。
源代碼:
package?demo;
import?java.io.*;
public?class?QiPan
{
//定義一個(gè)二維數(shù)組來充當(dāng)棋盤
private?String[][] board;
//定義棋盤的大小
private?static?int?BOARD_SIZE?= 15;
public?void?initBoard()
{
//初始化棋盤數(shù)組
board?= new?String[BOARD_SIZE][BOARD_SIZE];
//把每個(gè)元素賦為"╋",用于在控制臺(tái)輸出棋盤
for?(int?i = 0 ; i < BOARD_SIZE?; i++)
{
for?( int?j = 0 ; j < BOARD_SIZE?; j++)
{
board[i][j] = "╋";
}
}
}
//在控制臺(tái)輸出棋盤的方法
public?void?printBoard()
{
//打印每個(gè)數(shù)組元素
for?(int?i = 0 ; i < BOARD_SIZE?; i++)
{
for?( int?j = 0 ; j < BOARD_SIZE?; j++)
{
//打印數(shù)組元素后不換行
System.out.print(board[i][j]);
}
//每打印完一行數(shù)組元素后輸出一個(gè)換行符
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("請(qǐng)輸入您下棋的座標(biāo),應(yīng)以x,y的格式:");
//br.readLine():每當(dāng)在鍵盤上輸入一行內(nèi)容按回車,剛輸入的內(nèi)容將被br讀取到。
while?((inputStr = br.readLine()) != null)
{
//將用戶輸入的字符串以逗號(hào)(,)作為分隔符,分隔成2個(gè)字符串
String[] posStrArr = inputStr.split(",");
//將2個(gè)字符串轉(zhuǎn)換成用戶下棋的座標(biāo)
int?xPos = Integer.parseInt(posStrArr[0]);
int?yPos = Integer.parseInt(posStrArr[1]);
//把對(duì)應(yīng)的數(shù)組元素賦為"●"。
gb.board[xPos - 1][yPos - 1] = "●";
/*
電腦隨機(jī)生成2個(gè)整數(shù),作為電腦下棋的座標(biāo),賦給board數(shù)組。
還涉及
1.座標(biāo)的有效性,只能是數(shù)字,不能超出棋盤范圍
2.如果下的棋的點(diǎn),不能重復(fù)下棋。
3.每次下棋后,需要掃描誰贏了
*/
gb.printBoard();
System.out.println("請(qǐng)輸入您下棋的座標(biāo),應(yīng)以x,y的格式:");
}
}
}
1)實(shí)驗(yàn)結(jié)果截圖:
實(shí)驗(yàn)任務(wù)三:請(qǐng)編寫一個(gè)程序?qū)⒁粋€(gè)整數(shù)轉(zhuǎn)換為漢字讀法字符串。比如“1123”轉(zhuǎn)換為“一千一百二十三”。 更進(jìn)一步,能否將數(shù)字表示的金額改為“漢字表達(dá)? 比如將“¥123.52”轉(zhuǎn)換為“壹佰貳拾叁元伍角貳分”。
1)程序設(shè)計(jì)思想:
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
{
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("輸入整數(shù):");
String x=in.next();
System.out.print("轉(zhuǎn)換后為:"+nr.Change(x));
}
}
進(jìn)一步,金額的源代碼:
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
{
if(str.charAt(i)=='.')
{
p=i;
break;
}
}
for(int?i=0;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
{
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("轉(zhuǎn)換后為:"+nr.Change(x));
}
}
4)實(shí)驗(yàn)結(jié)果截圖:
實(shí)驗(yàn)任務(wù)四:大數(shù)
(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("請(qǐng)輸入第一個(gè)數(shù):");
String aa=in.next();
System.out.println("請(qǐng)輸入第二個(gè)數(shù):");
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()
{
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("相加的結(jié)果為:");
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("相減的結(jié)果為:");
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)?程序截圖
實(shí)驗(yàn)任務(wù)五:隨機(jī)生成10個(gè)數(shù),填充一個(gè)數(shù)組,然后用消息框顯示數(shù)組內(nèi)容,接著計(jì)算數(shù)組元素的和,將結(jié)果也顯示在消息框中。
(1)?程序設(shè)計(jì)思路:先定義一個(gè)數(shù)組,用random算法產(chǎn)生隨機(jī)數(shù),利用for循環(huán)將隨機(jī)數(shù)導(dǎo)入數(shù)組中,遍歷計(jì)算數(shù)組元素的和,然后輸出即可。
(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個(gè)隨機(jī)數(shù)為:"+"\n";
for(int?i=0;i
{
int?m=(int)(Math.random()*100);
a[i]=m;
str+=a[i]+"\n";
sum+=a[i];
}
str+="隨機(jī)數(shù)的和為:"+sum;
JOptionPane.showMessageDialog(null,str,"結(jié)果",JOptionPane.INFORMATION_MESSAGE);
}
}
程序截圖:
(5)編程總結(jié):學(xué)會(huì)了利用循環(huán)將隨機(jī)數(shù)賦給數(shù)組,然后計(jì)算數(shù)組元素的和,遍歷并輸出,把問題從大化小,由繁化簡,逐步分析,完成項(xiàng)目。
總結(jié)
以上是生活随笔為你收集整理的java动脑公开课_java课堂动手动脑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓三国志2光荣(安卓三国志2)
- 下一篇: pdfbox java.lang.out