数组编程题

1、(游戏:豆机)豆机,也称为梅花瓶或髙尔顿瓶,它是一个用来做统计实验的设备,是用英国科学家瑟弗兰克斯髙尔顿的名字来命名的。它是一个三角形状的均匀放置钉子(或钩子)的直立板 子,如图所示

数组编程题_第1张图片

 

球都是从板子口落下的。每当球碰到钉子,它就有 50%的机会落向左边或落向右边。在板子底部的槽子中都会累积一堆球。

编写程序模拟豆机。程序应该提示用户输入球的个数以及机器的槽数。打印每个球的路 径模拟它的下落。例如:在图 7-13b中球的路径是 LLRRLLR, 而在图 7-13c中球的路径是 RLRRLRR。使用条形图显示橹中球的最终储备量。下面是程序的一个运行示例:

数组编程题_第2张图片

提示:创建一个名为 slots的教组。教组 slots 中的每个元素存储的是一个槽中球的个数。每 个球都经过一条路径落入一个槽中。路径上 R的个數表示球落下的槽的位置。例如:对于路径 LRLRLRR 而言,球落到 slots[4]中,而对路径 RRLLLLL 而言,球落到 slots[2]中。

题目分析:

数组编程题_第3张图片

 代码思想:

数组编程题_第4张图片

 

import java.util.Arrays;
import java.util.Scanner;

public class Class32 {
    public static void main(String args[]){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter the number of balls to drop:");
        int balls=scanner.nextInt();//输入球的个数
        System.out.print("Enter the number of slots in the bean machine:");
        int[] arr=new int[scanner.nextInt()];   //槽子数组
        String s1="";
        for(int i=0;imax){
                max=arr[c];
            }
        }
            System.out.println("最大值为:"+max);//数组的最大值找到
        System.out.println("最终球在槽子中的发布如下所示:");
        int top=max;
        int l=0;
        for(int k=0;k

输出结果:

数组编程题_第5张图片

 2、(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值:

public static int[] eliminateDuplicates(int[] list)

编写一个测试程序,读取 10 个整数,调用该方法,然后显示结果。下面是程序的运行示例:

import java.util.Arrays;
import java.util.Scanner;
public class Class30 {
    public static void main(String args[]){
        //边读边删
        way1();
        //读完再删
        way2();
    }
//方法1
    public static void way1( ){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter ten numbers:");
        int[] arr=new int[0];
        for(int i=0;i<10;i++){
            int number=scanner.nextInt();
            //如果数组中不包含这个数字就存到一个新的数组中:即容量+1,然后给扩容后的这个数组中最后一个元素赋值
            if(!isContains(arr,number)){
                arr=resize(arr,arr.length+1);//获得新数组
                arr[arr.length-1]=number;   //更新数组内的最后一个元素
            }
            //如果包含这个数字,角标i++直接跳过这个数字
        }
        System.out.println(Arrays.toString(arr));
    }
    //判断指定数组是否包含指定元素
    public static boolean isContains(int[] arr,int key){
        for(int i=0;i

 3.俩个矩阵相乘

数组编程题_第6张图片

参考定义:

数组编程题_第7张图片 

import java.util.Scanner;
public class Home33 {
    public static void main(String args[]){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter matrix1 2*3:");
        double[][] arr1=new double[2][3];
        for(int i=0;i

4.猜字游戏

数组编程题_第8张图片

import java.util.Random;
import java.util.Scanner;

public class Class34 {
	//1.先生成一组单词
	public static String[] words= {"computer","since","this","double","decide"};
	//随机抽取一个单词
	public static String word=null;
	//创建该单词的状态数组
	public static boolean[] state=null;
	//当前轮猜错的次数
	public static int missed=0;
	
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		Random random=new Random();
		word=words[random.nextInt(words.length)];
		state=new boolean[word.length()];
		
	//开始输入字符猜单词
		while(true) {
			String password=getPassWord();	//接收最新的猜单词结果
			System.out.print("Enter a letter in word "+password+":");
			String letter=scanner.nextLine();	//输入一个字母
			changWordsState(letter);	//修改状态数组
			if(isEnd()) {
				System.out.println("The word is "+word+".You missed "+missed+" time");//结束时打印猜单词游戏的结果(单词+错误次数)
				System.out.println("Do you want to guess another word?Enter y or n:");//提示是否继续
				if(scanner.nextLine().equals("y")) {
					word=words[random.nextInt(words.length)];
					state=new boolean[word.length()];
					missed=0;
				}else{
					break;
				}
			}
		}
	}
	//判断是否结束
	private static boolean isEnd() {
		for(int i=0;i

 5.五子棋

数组编程题_第9张图片

import java.util.Scanner;
class WuZiQi{
    /*
    1.创建一个棋盘
    2.对棋盘进行初始化
    3.打印棋盘
    4.开始游戏
    */

    //1.定义全局变量
    public static String[][] board=null;	//棋盘字符数组
    public static Scanner scanner=new Scanner(System.in);

    public static void main(String[] args){
        
        initBoard();//定义棋盘
       
        printBoard();//打印棋盘
       
        startGame();//开始游戏
    }
    public static void startGame(){
        int player=0;	//先计数从0开始,奇偶交替下棋
        while(!isGameOver()){	//下棋的前提条件是游戏没有结束
            if(player%2==0){//黑方
                System.out.println(">>>黑方下棋:");
                if(!xiaqi("O")){	//如果不成功,当前玩家继续下棋
                    continue;	//重新下棋 
                }
            }else{//白方
                System.out.println(">>>白方下棋:");
                if(!xiaqi("X")){
                    continue;
                }
            }
            player++;	//	更新 
        }
        System.out.println(">>>游戏结束!!");
    }
//判断结束
//默认从第一个棋子开始遍历寻找,所以只判断当前棋子的右,右下,下,右上
    public static boolean isGameOver(){
        for(int i=0;i3&&j<11){
                        boolean flag=true;
                        for(int d=1;d<=4;d++){
                            if(board[i][j]!=board[i-d][j+d]){
                                flag=false;
                                break;
                            }
                        }
                        if(flag){
                            return true;
                        }
                    } 
                }
            }
        }
        return false;	//此时说明四个方向都没有成连棋,表示没有结束,返回false
    }
    //填充棋子
    public static boolean xiaqi(String chess){
        System.out.print(">>>请输入x坐标:");
        int x=scanner.nextInt()-1;
        System.out.print(">>>请输入y坐标:");
        int y=scanner.nextInt()-1;
        if(board[x][y].equals("+")){
            board[x][y]=chess;//更新棋子
            printBoard();//重绘
            return true;
        }else{
            System.out.println(">>>棋子已存在,请重新下棋!");
            return false;
        }
    }
    public static void printBoard(){	//打印
        System.out.print("   ");
        for(int i=1;i<=board.length;i++){
            System.out.printf("%-3d",i);	//i表示棋盘的列所对应数字
        }
        System.out.println();
        for(int i=0;i

 

你可能感兴趣的:(编程题)