面向对象(数组代码分析)

例一:数组的特点及练习
* 1、数组的概念–就是一种集合
* 2、数组的特点–3个特点数组的类型确定就不能改变、长度不可变,空间连续性存放,也是3个缺点
* 3、数组的语法
* 4、数组在内存中的保存形式–引用类型
*
*/
// Scanner scan = new Scanner(System.in);
// System.out.println(“请输入一个字母组成的字符串:”);
// String str = scan.next();
//
// char[] array = str.toCharArray();
//
// //请把array这个字符数组中的字母大写变小写,小写变大写!
// for(int i = 0; i < array.length; i++){
// if(array[i] >= ‘A’ && array[i] <= ‘Z’){
// array[i] = (char)(array[i] + 32);
// }else if(array[i] >= ‘a’ && array[i] <= ‘z’){
// array[i] = (char)(array[i] - 32);
// }
// }
//
// for(int i = 0; i < array.length; i++){
// System.out.print(array[i]);
// }

    Scanner scan = new Scanner(System.in);
    System.out.println("请输入第一个字符串:");
    String str1 = scan.next();
    System.out.println("请输入第二个字符串:");
    String str2 = scan.next();

    char[] array1 = str1.toCharArray();
    char[] array2 = str2.toCharArray();
    //请把两个数组拼接到array3当中,array1在前array2在后
    char[] array3 = new char[array1.length + array2.length];
    //拼接第一个
    for(int i = 0; i < array1.length; i++){
        array3[i] = array1[i];
    }
    //拼接第二个
    for(int i = array1.length; i < array3.length; i++){
        array3[i] = array2[i - array1.length];
    }
    //打印结果
    for(int i = 0; i < array3.length; i++){
        System.out.print(array3[i]);
    }

二维数组练习
public static void main(String[] args) {

    /*
     * 二维数组:其实就是一个一维数组,里面的每个元素就是一个一维数组
     */
    //请输入3个组,每个组4个同学的成绩,然后找出其中最高分是多少?
    int[][] scores = new int[3][4];
    Scanner scan = new Scanner(System.in);
    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 4; j++){
            System.out.println("请输入第"+(i+1)+"组第"+(j+1)+"个同学成绩");
            scores[i][j] = scan.nextInt();
        }
    }

    int max = scores[0][0];

    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 4; j++){
            if(scores[i][j] > max){
                max = scores[i][j];
            }
        }
    }

    System.out.println("最好分为:" + max);

例二:超级数组,乾坤袋(只改变数组长度)
//Int类型数组乾坤袋
public class SuperIntArray {
//属性
public int[] array;

private int index;//代表两层含义:1、下一个元素所在的下标;2、已经放了多少个元素。

public SuperIntArray(){
    this.array = new int[20];
}

//行为
//放入元素
public void add(int num){
    if(this.index >= this.array.length){
        //扩容
        int[] newArray = new int[this.array.length + 10];
        System.arraycopy(this.array, 0, newArray, 0, this.array.length);
        this.array = newArray;
    }
    //把传入的num放入到array当中去
    this.array[index] = num;
    this.index++;
}

//得到某个元素
public int get(int index){
    if(index < this.index && index >= 0){
        return this.array[index];
    }
    throw new ArrayIndexOutOfBoundsException(index);
}

//修改某个元素
public void set(int index,int newNum){
    if(index < this.index && index >= 0){
        this.array[index] = newNum;
    }
    throw new ArrayIndexOutOfBoundsException(index);
}

//删除某个位置的元素
public void remove(int index){
    if(index < this.index && index >= 0){
        System.arraycopy(this.array, index + 1, this.array, index , this.array.length - index - 1);
        this.index -- ;
        if(this.array.length - this.index >= 10 && this.array.length > 20){
            int[] newArray = new int[this.array.length - 10];
            System.arraycopy(this.array, 0, newArray, 0, newArray.length);
            this.array = newArray;
        }
    }
    throw new ArrayIndexOutOfBoundsException(index);
}

//获得元素的个数
public int size(){
    return this.index;
}
public int getCapibility(){
    return this.array.length;
}

}

例三:猜数字游戏与双色球
import java.util.Scanner;

public class GuessGame {

private int[] backNum = new int[4];

private int[] inputNum = new int[4];

//主控方法
public void run(){
    this.autoGenerate();
    for(int i = 0; i < 7; i++){
        System.out.println("第" + (i + 1) + "次猜测:");
        this.inputNumber();
        String result = this.compare();
        System.out.println("您本次猜测的结果是:" + result);
        if(result.equals("4A0B")){
            System.out.println("恭喜,恭喜。天才!!");
            break;
        }else if(i == 6){
            System.out.print("可惜了.....结果是:");
            this.showBackNum();
        }
    }

}

//作弊方法
private void showBackNum(){
    for(int i = 0; i < 4; i++){
        System.out.print(this.backNum[i]);
    }
    System.out.println();
}

//生成后台数
private void autoGenerate(){
    for(int i = 0; i < this.backNum.length; i++){
        this.backNum[i] = (int)(Math.random() * 10);
        for(int j = 0; j < i; j++){
            if(this.backNum[i] == this.backNum[j]){
                i--;
                break;
            }
        }
    }
}

//接收输入
private void inputNumber(){
    while(true){
        System.out.println("请输入一个四位数:");
        int input = new Scanner(System.in).nextInt();
        if(input < 100 || input >= 10000){
            System.out.println("输入有误,请保证输入的是一个每不重复的四位数");
            continue;
        }

        this.inputNum[0] = input / 1000;
        this.inputNum[1] = input / 100 % 10;
        this.inputNum[2] = input / 10 % 10;
        this.inputNum[3] = input % 10;

        boolean flag = this.examInput();
        if(flag){
            break;
        }
    }

}

//校验输入重复位
private boolean examInput(){
    for(int i = 1; i < this.inputNum.length; i++){
        for(int j = 0; j < i; j++){
            if(this.inputNum[i] == this.inputNum[j]){
                System.out.println("您输入的数中有相同位,请重新输入");
                return false;
            }
        }
    }
    return true;
}

private String compare(){
    String result = "";
    int numA = 0;
    int numB = 0;
    for(int i = 0; i < this.inputNum.length; i++){
        for(int j = 0; j < this.backNum.length; j++){
            if(this.inputNum[i] == this.backNum[j] && i == j){
                numA ++;
            }else if(this.inputNum[i] == this.backNum[j]){
                numB ++;
            }
        }
    }
    result = numA + "A" + numB + "B";
    return result;
}

}

双色球

public class NumberGenerator {

private int[] redBalls = new int[6];

private int blueBall;
//流程控制
public void run(){
    for(int i = 0; i < 3; i++){
        this.generateRedBall();
        this.generateBlueBall();
        this.showResult();
    }
}

private void generateRedBall(){

    for(int i = 0; i < this.redBalls.length; i++){
        this.redBalls[i] = (int)(Math.random() * 33 + 1);
        for(int j = 0; j < i; j++){
            if(this.redBalls[i] == this.redBalls[j]){
                i--;
                break;
            }
        }
    }
}

private void generateBlueBall(){
    this.blueBall = (int)(Math.random() * 16 + 1);
}

private void showResult(){
    String redBallMsg = "";
    for(int i = 0; i < this.redBalls.length; i++){
        redBallMsg += this.redBalls[i];
        if(i != this.redBalls.length - 1){
            redBallMsg += ",";
        }
    }

    System.out.println("红球:" + redBallMsg);
    System.out.println("篮球:" + this.blueBall);
}

}

其他例子:

public class TestMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Student[] allStus = new Student[5];
// Scanner scan = new Scanner(System.in);
// for(int i = 0; i < 5; i++){
// System.out.println(“请输入名字:”);
// String inputName = scan.next();
// System.out.println(“请输入年龄:”);
// int inputAge = scan.nextInt();
// System.out.println(“请输入成绩:”);
// double inputScore = scan.nextDouble();
// allStus[i] = new Student(inputName,inputAge,inputScore);
// }
//
// Student maxStu = allStus[0];
// for(int i = 1; i < allStus.length; i++){
// if(maxStu.getScore() < allStus[i].getScore()){
// maxStu = allStus[i];
// }
// }

// User[] allUsers = new User[5];
// for(int i = 0; i < allUsers.length; i++){
// allUsers[i] = new User(“zhang” + i,”123456” + i);
// }
//
// //登录
//
// Scanner scan = new Scanner(System.in);
// System.out.println(“请输入用户名:”);
// String inputName = scan.next();
// System.out.println(“请输入密码:”);
// String inputPwd = scan.next();
//
// for(int i = 0; i < allUsers.length; i++){
// if(inputName.equals(allUsers[i].getUsername()) &&
// inputPwd.equals(allUsers[i].getPassword())){
// System.out.println(“登录成功!”);
// break;
// }else if(i == allUsers.length - 1){
// System.out.println(“登录失败!”);
// }
// }

// int[] a = {1,3,5,7,9};
// int[] b = new int[a.length + 1];
// System.arraycopy(a, 0, b, 0, a.length);
// for(int i = 0; i < a.length; i++){
// b[i] = a[i];
// }
// a = b;
// System.out.println(a[3]);

// int[] a = {1,3,5};
// int[] b = {27,99,80};
// int[] c = new int[a.length + b.length];
// System.arraycopy(a, 0, c, 0, a.length);
// System.arraycopy(b, 0, c, a.length, b.length);
// for(int i = 0; i < c.length; i++){
// System.out.println(c[i]);
// }
// for(int i = 0; i < a.length; i++){
// c[i] = a[i];
// }
//
// for(int i = 0; i < b.length; i++){
// c[i + a.length] = b[i];
// }

// int[] array = {5,34,-9,21,64};
// Scanner scan = new Scanner(System.in);
// System.out.println(“请输入你要删除的元素的下标:”);
// int index = scan.nextInt();
// System.arraycopy(array, index+1, array, index, array.length - index - 1);

// for(int i=index+1;i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值