java作業 06

來源:互聯網
上載者:User

標籤:顯示   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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.