例一:数组的特点及练习
* 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