標籤:顯示 length integer random 個數 toolbar math pack 其他
1.閱讀QiPan.java樣本程式瞭解如何利用二維數組和迴圈語句繪製五子棋盤。
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的格式:");
}
}
}
實驗結果:
2、請編寫一個程式,將一個整數轉化為漢字讀法。
實驗思路:
1、把0-9的漢字讀法寫到一個數組
2、把位元的讀法寫到另一個數組
3、使用者輸入一個數,以字串的形式輸入,再轉化為對象數組
4、用j標記第幾位,把字元轉化為數字,不是第一位還要加上相應的位元讀法
5、輸出用一個字串串連起來
來源程式:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Hanzidufa {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
char b[]={‘零‘,‘一‘,‘二‘,‘三‘,‘四‘,‘五‘,‘六‘,‘七‘,‘八‘,‘九‘};
char c[]={‘十‘,‘百‘,‘千‘,‘萬‘,‘億‘};
System.out.println("請輸入一個數:");
BufferedReader number=new BufferedReader(new InputStreamReader(System.in));
String num=number.readLine();
//int Point=num.indexOf(".");
char[] a=num.toCharArray();
String output="";
int n=a.length,j=0;
//System.out.println(n);
for(int i=0;i<n;i++){
j=n-i;
int d=a[i]-‘0‘;
if(j==1)
output+=b[d];
else{
output+=b[d];
output+=c[j-2];
}
}
System.out.print(output);
}
}
結果:
3 將數字表示的金額改為漢字表達
思路:
1、兩個數組,一個是大寫的數字,一個是位元
2、輸入金額,並轉化為數組
3、找到小數點的位置
4、小數點之前讀,從第一個到小數點之前讀,小數點之後最多有兩位
原始碼
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JinER {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
char b[]={‘零‘,‘壹‘,‘貳‘,‘三‘,‘肆‘,‘伍‘,‘陸‘,‘柒‘,‘捌‘,‘玖‘};
char c[]={‘拾‘,‘佰‘,‘仟‘,‘萬‘,‘億‘};
System.out.println("請輸入金額:");
BufferedReader number=new BufferedReader(new InputStreamReader(System.in));
String num=number.readLine();
int Point=num.indexOf(".");//下標
char[] a=num.toCharArray();
String output="";
int n=a.length,j=0;
for(int i=0;i<Point;i++){
j=Point-i;
int d=a[i]-‘0‘;
if(j==1)
output+=b[d];
else{
output+=b[d];
output+=c[j-2];
}
}
output+="元";
if(a.length>Point){
int d=a[Point+1]-‘0‘;
output+=b[d]+"角";
if((Point+3)==a.length)
{
int e=a[Point+2]-‘0‘;
output+=b[e]+"分";
}
}
System.out.print(output);
}
}
程式結果:
4、隨機產生10個數,填充一個數組,然後用訊息框輸出數組內容,接著計算數組元素的和將計算結果也顯示在訊息框中。
程式設計思路:
1、建立一個整型數組,定義字串output,定義變數b=0
2、用Math.random()產生隨機數
3、對話方塊輸出這10個隨機數
3、每個元素相加
4、用對話方塊輸出和
流程圖:
原始碼:
import java.util.Random;
import javax.swing.JOptionPane;
public class SuiJiShuZu {
public static void main(String[] args) {
// TODO Auto-generated method stub
String output="";
int a[]=new int[10];
int b=0;
output+="產生的10個隨機數是:\n";
for(int i=0;i<a.length;i++){
a[i]=(int) (Math.random()*1000);
output+=a[i]+" ";
}
JOptionPane.showMessageDialog(null, output,"information",JOptionPane.INFORMATION_MESSAGE);
for(int i=0;i<a.length;i++){
b+=a[i];
}
output+="\n\n 每個數相加結果為:"+b;
JOptionPane.showMessageDialog(null,output);
}
}
5、前面幾講介紹過JDK所提供的BigInteger能完成大數計算,如果不用它,直接使用數組表達大數,你能實現相同的功能嗎?
要求: (1)用你的大數類實現加和減兩個功能
(2)閱讀BigInteger類源碼,弄清楚它是使用什麼演算法實現加減乘除四種運算的?
(3)通過互連網尋找大數運算的相關資料,給你的大數類添加乘、除、求階乘等其它功能。
package Work;import java.util.Scanner;public class BigNum { public static void main(String[] args) { // TODO Auto-generated method stub int aa,bb; System.out.println("用數組實現大數的加法和減法"); System.out.print("請輸入大數a:"); Scanner scan=new Scanner(System.in); String a=scan.next(); System.out.print("請輸入大數b:"); String b=scan.next(); int A[]=new int[100]; int B[]=new int[100]; for(int i=0;i<a.length();i++){ A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1)); } for(int i=0;i<b.length();i++){ B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1)); } int sum=0; int sub=0; for(int i=0;i<a.length();i++){ sum+=A[i]+B[i]; sub+=A[i]-B[i]; } System.out.print("a+b="+sum); System.out.println(); System.out.print("a-b="+sub); }}
②運行結果:
(2)閱讀BigInteger類源碼,弄清楚它是使用什麼演算法實現加減乘除四種運算的?
BigInteger是不可變的任意精度的整數。所有操作中,都以二進位補碼形式表示BigInteger(如Java的基本整數類型)。BigInteger 提供所有 Java 的基本整數操作符的對應物,並提供 java.lang.Math 的所有相關方法。另外,BigInteger 還提供以下運算:模算術、GCD 計算、質數測試、素數產生、位操作以及一些其他動作。
(3)通過互連網尋找大數運算的相關資料,給你的大數類添加乘、除、求階乘等其它功能。
①原始碼:
//用數組實現大數的加法和減法
package Work;import java.util.Scanner;public class BigNum { public static void main(String[] args) { // TODO Auto-generated method stub int aa,bb; System.out.println("用數組實現大數的加法和減法"); System.out.print("請輸入大數a:"); Scanner scan=new Scanner(System.in); String a=scan.next(); System.out.print("請輸入大數b:"); String b=scan.next(); int A[]=new int[100]; int B[]=new int[100]; for(int i=0;i<a.length();i++){ A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1)); } for(int i=0;i<b.length();i++){ B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1)); } int sum=0; int sub=0; for(int i=0;i<a.length();i++){ sum+=A[i]+B[i]; sub+=A[i]-B[i]; } System.out.print("a+b="+sum); System.out.println(); System.out.print("a-b="+sub); }}
②運行結果:
(2)閱讀BigInteger類源碼,弄清楚它是使用什麼演算法實現加減乘除四種運算的?
BigInteger是不可變的任意精度的整數。所有操作中,都以二進位補碼形式表示BigInteger(如Java的基本整數類型)。BigInteger 提供所有 Java 的基本整數操作符的對應物,並提供 java.lang.Math 的所有相關方法。另外,BigInteger 還提供以下運算:模算術、GCD 計算、質數測試、素數產生、位操作以及一些其他動作。
(3)通過互連網尋找大數運算的相關資料,給你的大數類添加乘、除、求階乘等其它功能。
①原始碼:
//用數組實現大數的加法和減法
package Work;import java.util.Scanner;import java.math.BigDecimal;public class BigNum { public static void main(String[] args) { // TODO Auto-generated method stub int aa,bb; System.out.println("用數組實現大數的加法和減法"); System.out.print("請輸入大數a:"); Scanner scan=new Scanner(System.in); String a=scan.next(); System.out.print("請輸入大數b:"); String b=scan.next(); int A[]=new int[100]; int B[]=new int[100]; //用於複雜的乘法和除法 BigDecimal b1 = new BigDecimal(a) ; BigDecimal b2 = new BigDecimal(b) ; for(int i=0;i<a.length();i++){ A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1)); } for(int i=0;i<b.length();i++){ B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1)); } int sum=0; int sub=0; for(int i=0;i<a.length();i++){ sum+=A[i]+B[i]; sub+=A[i]-B[i]; } System.out.print("a+b="+sum); System.out.println(); System.out.print("a-b="+sub); System.out.println(); System.out.print("a*b="+b1.multiply(b2)); System.out.println(); System.out.print("a/b="+b1.divideToIntegralValue(b2)); } }
②運行結果:
package Work;import java.util.Scanner;import java.math.BigDecimal;public class BigNum { public static void main(String[] args) { // TODO Auto-generated method stub int aa,bb; System.out.println("用數組實現大數的加法和減法"); System.out.print("請輸入大數a:"); Scanner scan=new Scanner(System.in); String a=scan.next(); System.out.print("請輸入大數b:"); String b=scan.next(); int A[]=new int[100]; int B[]=new int[100]; //用於複雜的乘法和除法 BigDecimal b1 = new BigDecimal(a) ; BigDecimal b2 = new BigDecimal(b) ; for(int i=0;i<a.length();i++){ A[i]=(int) ((a.charAt(i)-48)*Math.pow(10,a.length()-i-1)); } for(int i=0;i<b.length();i++){ B[i]=(int) ((b.charAt(i)-48)*Math.pow(10,b.length()-i-1)); } int sum=0; int sub=0; for(int i=0;i<a.length();i++){ sum+=A[i]+B[i]; sub+=A[i]-B[i]; } System.out.print("a+b="+sum); System.out.println(); System.out.print("a-b="+sub); System.out.println(); System.out.print("a*b="+b1.multiply(b2)); System.out.println(); System.out.print("a/b="+b1.divideToIntegralValue(b2)); } }
②運行結果:
java作業 06