Java实验1

实验内容

(1)猜数字

编写一个Java应用程序,实现如下功能:

A.随机分配给客户一个1~100之间的整数。

B.用户从键盘输入自己的猜想。

C.程序返回提示:”大了”,”小了”,”猜对了”。

D.用户根据提示,再次输入猜想的数,直到猜对为止,显示”猜对了”,同时输出猜想的次数。

(2)金额的中文大写形式

给定一个浮点数,将其转换为金额的中文大写形式的字符串。例如,123.45表示为“壹佰贰拾叁元肆角伍分”。注意以下几种情况:

A.当金额为整数时,只表示整数部分,省略小数部分,并添加“整”字,例如123表示成“壹佰贰拾叁元整”。

B.当金额中含有连续的0时,只需写一个“零”即可。例如10005表示为“壹万零伍元整”。

C.10的省略表示。例如110表示为“壹佰壹拾元整”,而10表示为“拾元整”。

D.100表示为“壹佰元整”,1000表示为“壹仟元整”等等。

(3)三子棋

编写程序,实现简单的三子棋游戏。在三子棋中,双方在3*3的棋盘中轮流下棋,一方用*表示,另一方用O表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满,但没有一方获胜则出现平局。在程序中,一方为用户,用户在界面上输入每次下棋的位置;另一方下棋的位置为计算机随机自动生成。

实验结果

猜数字

金额的中文大写形式

三子棋

源代码

猜数字

Guess.java

package lab1;
import java.util.Random;
import java.util.Scanner;
public class Guess {
	public static void main(String[] args) {
		Random r = new Random();
		int ran1 = r.nextInt(100);
		Scanner reader = new Scanner(System.in);
		int ant = 0;
		while(true) {
			System.out.println("------请输入一个整数数字--------");
			int ans = reader.nextInt();
			if(ans > ran1) {
				ant++;
				System.out.println("大了");
				System.out.println("游戏继续");
			}
			else if(ans < ran1) {
				ant++;
				System.out.println("小了");
				System.out.println("游戏继续");
			}
			else {
				ant++;
				System.out.println("猜对了");
				System.out.println("游戏结束");
				System.out.println("共猜了"+ ant + "次");
				break;
			}
		}
		reader.close();
	}
}

金额的中文大写形式

 Money.java

package lab1;
import java.util.Scanner;
public class Money {
	public static void main(String[] args) {
		char [] st = {'零','壹','贰','叁','肆','伍','陆','柒','捌','玖','拾'};
		char [] ans = {'元','万'};
		char [] ant = {'千','元','拾','佰'};
		Scanner ran1 = new Scanner(System.in);
		String s = ran1.nextLine();
		char [] moe = new char[100];
		int wt = 0;
		char [] all = s.toCharArray();
		char [] wh = new char[100];
		int x1 = 0;
		for(int i = 0; i<all.length; i ++ ) {
			if(all[i]=='.') 
				break;
			wh[x1++]=all[i];
		}
		int t = x1;
		for(int i = 0; i < t ; i ++ ) {
	    	if(wh[i]=='0'&&(t-i)%4!=1) {
	    		if(wh[i+1]!='0') moe[wt++] = '零';
	    			continue;
	    	}
	    	if((t-i)%4==1) {
	    		if(wh[i]!='0')
	    			moe[wt++]=st[wh[i]-'0'];
	    		if(wh[i]!='0'||(i-1>=0&&wh[i-1]!='0')||(i-2>=0&&wh[i-2]!='0')||(i-3>=0&&wh[i-3]!='0')) {
	    			int k = (t-i)/4;
	    		    moe[wt++]=ans[k];
	    		}
	    		continue;
	    	}
	    	moe[wt++]=st[wh[i]-'0'];
	    	int u = (t-i)%4;
	    	moe[wt++]=ant[u];
	    }
		if(t-4>=0&&wh[t-1]=='0'&&wh[t-2]=='0'&&wh[t-3]=='0'&&wh[t-4]=='0')
			moe[wt++]='元';
	    else if(t==1&&wh[t-1]=='0') {
	    	moe[wt++]='零';
	    	moe[wt++]='元';
	    }
		if(!s.contains("."))
			moe[wt++]='整';
		else {
			for(int i = x1+1;i < all.length ; i ++ ) {
				if(i==x1+1) {
					moe[wt++] = st[all[i]-'0'];
					moe[wt++] = '角';
					continue;
				}
	    	    else {
	    	    	moe[wt++] = st[all[i]-'0'];
	    	    	moe[wt++] = '分';
	    	    	break;
	    	    }
			}
	        if(x1+1==all.length-1) {
	        	moe[wt++]='零';
	    	    moe[wt++]='分';
	        }
		}
		ran1.close();
		System.out.println(moe);
	}
}

三子棋 

 Battle.java

package lab1;
import java.util.Random;
import java.util.Scanner;
class CheckerBoard {
	private int x,y;
	public static char [][] st = {{'$','$','$'},{'$','$','$'},{'$','$','$'}};
	public boolean  dos(int a,int b,char t) {
		x = a;
		y = b;
		if(check()){
			change(t);
			return false;
		}
		return true;
	}
    public boolean check() {
		if(st[x][y]=='$') 
			return true;
		return false;
	}
    public void  change(char it) {
    	st[x][y] = it;
    }
    public int judge() {
    	for(int i = 0 ; i < 3 ; i ++ )
    		if(st[i][0]==st[i][1] && st[i][1]== st[i][2]) {
    			if(st[i][0]=='X' )
    				return 1;
    			else if(st[i][0]=='O')
    				return 2;
    		}
    	for(int i = 0 ; i < 3 ; i ++ )
    		if(st[0][i]==st[1][i] && st[1][i]== st[2][i])
    		{
    			if(st[0][i]=='X' )
    				return 1;
    			else if(st[0][i]=='O')
    				return 2;
    		}
    	if(st[0][0]==st[1][1] && st[1][1] == st[2][2]) 
    	{
    		if(st[0][0]=='X' )
    			return 1;
			else if(st[0][0]=='O')
				return 2;
    	}
    	if(st[2][0]==st[1][1] && st[1][1] == st[0][2]) 
    	{
    		if(st[2][0]=='X' )
    			return 1;
			else if(st[2][0]=='O')
				return 2;
    	}
    	boolean ends = true;
    	for(int i = 0 ; i < 3 ; i ++ )
    	  for(int j = 0; j < 3; j ++ )
    		   if(st[i][j]=='$') {
    			   ends = false;
    			   break;
    		   }
    	if(ends)
    		return 4;
    	return 3;
    }
    public static void shows() {
    	for(int i = 0; i < 3; i ++ )
    	 for(int j = 0; j < 3 ; j ++ ) {
    		 System.out.print(st[i][j]);
    		 if(j==2)
    			 System.out.println();
    	 }
    }
}
public class Battle {
   public static void main(String [] args) {
	   Random computer = new Random();
	   Scanner ran1= new Scanner(System.in);
	   CheckerBoard player = new CheckerBoard();
	   CheckerBoard machine = new CheckerBoard();
	   System.out.println("$表示尚未放棋子的位置");
	   System.out.println("X是玩家的棋子");
	   System.out.println("O是电脑的棋子");
	   while(true) {
		   CheckerBoard.shows();
		   System.out.println("请输入x 坐标");
		   int x = ran1.nextInt()-1;
		   System.out.println("请输入y 坐标");
		   int y = ran1.nextInt()-1;
		   int x1 = computer.nextInt(3);
		   int y1 = computer.nextInt(3);
		   while(player.dos(x,y,'X')) {
			   System.out.println("输入的位置错误");
			   CheckerBoard.shows();
			   System.out.println("请输入x 坐标");
			    x = ran1.nextInt()-1;
			   System.out.println("请输入y 坐标");
			    y = ran1.nextInt()-1;
		   }
		   while(machine.dos(x1,y1,'O')) {
			  x1 = computer.nextInt(3);
			  y1 = computer.nextInt(3);
		   }
		   int t = player.judge();
		   if(t==1){
			   System.out.println("你赢了");
			   CheckerBoard.shows();
			   break;
		   }
		   else if(t==2){
			   System.out.println("你输了");
			   CheckerBoard.shows();
			   break;
		   }
		   else if(t==3){
			   System.out.println("游戏继续");
		   }
		   else {
			   System.out.println("平局");
			   CheckerBoard.shows();
			   break;
		   }
	   }
	   ran1.close();
   }
}
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值