什么是数组?
数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据。数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器。
如何理解:其实就是一个同时放很多数据的变量。
a=1;
a=2;
a=3;
这成了反复赋值,最后a=3;
a怎么能同时放下1,2,3......?
如 int a0;int a1; int a2; 同时具备3个变量才能存储。
一定让a存下3个或更多数据呢?
如果是同样的数据类型,这时用一个变量名 a 来放这些数据,这就是数组。
如下:
a0=1;
a1=2;
a2=3;
a3=4;
a4=5;
a5=6;
这样变量名字还是变了,我们用 a[下标] 来表示数组中的某个元素
归纳一下:如何赋值一个数组呢? 确定数组的数据类型 int a[20] 下标从0开始。//for(int i=0;// orc guai[100];
a[0]=1;
a[1]=2;
a[2]=3;
.........a[19];
存储固定大小同类元素的容器。
两种定义方法:
一种:
dataType[] arrayName = new dataType[arraySize];
int [] arr=new int[10];
arr[0]=22;
arr[1]=18;
........
arr[9]=321;
另一种:
dataType[] arrayName = {value0, value1, ..., valuek};
int [] arr={238,23,21,34,87,2,3,19,198,28};
使用一位数组解决 1 1 2 3 5 8 13 数列问题 斐波纳契数列 Fibonacci //一维数组 输出30个Fibonacci数列
#include
using namespace std;int main(){//定义一个一维数组int arr[30]&#61;{1,1};//造fabonacci数组for(int i&#61;2;i<30;i&#43;&#43;) {arr[i]&#61;arr[i-1]&#43;arr[i-2];}//遍历一下for(int i&#61;0;i<30;i&#43;&#43;){cout<endl;} return 0;
}
//一维数组 输出30个Fibonacci数列
#include
using namespace std;int main(){//定义一个一维数组int arr[30]&#61;{1,1};//造fabonacci数组for(int i&#61;2;i<30;i&#43;&#43;) {arr[i]&#61;arr[i-1]&#43;arr[i-2];}//遍历一下for(int i&#61;0;i<30;i&#43;&#43;){cout<
}
分析&#xff1f;
1 1 2 3 5 8 13 这个数列的下一个是什么&#xff1f;得到什么规律&#xff1f;如何用一维数组实现&#xff1f;
把C&#43;&#43;的程序编程Java的。
一维数组的排序&#xff0c;把数组中的元素按照从小到大的顺序输出&#xff1f;
两种方法选择法与冒泡法
选择法的思路&#xff1f;
思路&#xff1a;用一个数组元素和所有其他的所有元素PK&#xff0c;谁小谁放第一个&#xff0c;确定一个位置再确定下一个位置&#xff0c;一次类推
把下边c&#43;&#43;的代码换成Java的
#include
using namespace std;int main(){//声明一维数组&#xff1f;整型的一维数组&#xff0c;就是数组中所有的元素都是int int arr[10]&#61;{23,234,3,1,19,21,231,88,90,11};for(int i&#61;0;i<10;i&#43;&#43;){cout<<"一维数组的第 "<" 个值是 "<
// for(int i&#61;0;i<10-1;i&#43;&#43;){
// for(int j&#61;i&#43;1;i<10;j&#43;&#43;){
// if(array[i]>array[j]){
// int temp;
// temp&#61;array[i];
// array[i]&#61;array[j];
// array[j]&#61;temp;
// }
// }
// }for(int i&#61;0;i<10-1;i&#43;&#43;) {for(int j&#61;i&#43;1;j<10;j&#43;&#43;) {if(arr[i]>arr[j]) {int temp;temp&#61;arr[i];arr[i]&#61;arr[j];arr[j]&#61;temp;}}}//排序后再遍历字符一下数组for(int i&#61;0;i<10;i&#43;&#43;){cout<<"遍历后一维数组的第 "<" 个值是 "<
}
选择法的思路&#xff1f;
思路&#xff1a;
数组中相邻的两个元素两两比较&#xff0c;逐步把小的放在前面&#xff0c;一轮过后最大的数值如石头一样沉入水底&#xff0c;而相对较小的数值如气泡逐渐在水中上浮&#xff0c;经过n轮的两两比较冒泡排序
把下边c&#43;&#43;的代码换成Java的
#include
using namespace std;int main(){//声明一维数组&#xff1f;整型的一维数组&#xff0c;就是数组中所有的元素都是int int arr[10]&#61;{23,234,3,1,19,21,231,88,90,11};for(int i&#61;0;i<10;i&#43;&#43;){cout<<"一维数组的第 "<" 个值是 "<
}
什么是对象数组&#xff1f;
人类对象数组——一堆人&#xff0c;实例如下&#xff1a;
package com.swift;public class PersonArray
{public static void main(String args[]){person per[]&#61;new person[3];per[0]&#61;new person("张三",20);per[1]&#61;new person("李四",22);per[2]&#61;new person("王五",23);for (int x&#61;0;x
}
class person
{private String name;private int age;public person(String name,int age){this.name&#61;name;this.age&#61;age;}public void getinfo(){System.out.println("姓名: "&#43;this.name&#43;" 年龄: "&#43;this.age);}
}
最后使用一维数组来完成吃金币游戏中&#xff0c;成堆的金币&#xff0c;很多炸弹的布置。
实现游戏中生成8个金币精灵和3个炸弹精灵&#xff0c;每个精灵有自己的精灵序号&#xff0c;和在游戏窗口中的横纵坐标
游戏代码如下&#xff1a;
package com.swift;import java.awt.Color;
import java.awt.Point;
import java.awt.event.KeyEvent;import com.rupeng.game.GameCore;
/*** &#64;author swift* &#64;version 2.0* &#64;category 新增炸弹功能&#xff0c;精灵如果吃到炸弹立即死亡&#xff0c;游戏结束&#xff1b;* &#64;category 新增游戏倒计时功能&#xff0c;倒计时60秒* &#64;category 新增游戏胜利失败功能&#xff0c;吃完金币则胜利&#xff0c;吃到炸弹失败*/
public class Coin2 implements Runnable {public static void main(String[] args) {GameCore.start(new Coin2());}&#64;Overridepublic void run() {//设置窗体大小、标题、背景GameCore.setGameSize(800, 345);GameCore.setGameTitle("用键盘操控精灵移动的小游戏");GameCore.loadBgView("bg.jpg");// 设置女精灵出现及出场位置int spriteGirl &#61; 0;GameCore.createSprite(spriteGirl, "guizi");GameCore.playSpriteAnimate(spriteGirl, "run", true);GameCore.setSpritePosition(spriteGirl, 140, 190);// 使用数组放置8个金币的数量、横坐标、纵坐标int[] coinNum &#61; { 1, 2, 3, 4, 5, 6, 7, 8 };int[] coinXDate &#61; { 100, 200, 300, 400, 500, 600, 700, 730 };int[] coinYDate &#61; { 140, 180, 150, 190, 140, 170, 160, 140 };// 使用数组放置3个炸弹的数量、横坐标、纵坐标int[] bombNum &#61; { 9, 10, 11 };int[] bombXDate &#61; { 250, 450, 650 };int[] bombYDate &#61; { 160, 160, 190 };//boolean[] coinIsDead &#61; new boolean[8];//设置右上角显示的金币图片和吃到的金币数量GameCore.createImage(0);GameCore.setImageSource(0, "bigCoin.png");GameCore.setImagePosition(0, 710, 20);GameCore.createText(0, "NUM");GameCore.setTextColor(0, Color.WHITE);GameCore.setTextPosition(0, 650, 25);GameCore.createText(1, "0");GameCore.setTextPosition(1, 760, 25);GameCore.setTextColor(1, Color.WHITE);//设置左上角显示的时间倒计时GameCore.createText(3, "Time-Left");GameCore.setTextColor(3, Color.WHITE);GameCore.setTextFontSize(3, 20);GameCore.setTextPosition(3, 25, 5);GameCore.createText(4, "60");GameCore.setTextPosition(4,60, 25);GameCore.setTextColor(4, Color.WHITE);GameCore.setTextFontSize(4, 28);//设置游戏倒计时的时间开始点long timeBegin&#61;System.currentTimeMillis();//设置吃掉金币前金币依然活着 另一种初始化数组方法 boolean[]boolean[] coinIsDead&#61;{false,false,false,false,false,false,false,false};//金币精灵死亡数int textNum &#61; 0;//根据横纵坐标设置金币精灵在游戏中的出现for (int i &#61; 0; i
}if(textNum&#61;&#61;8) {//输出文本GameCore.createText(newTextNum, "You Win");GameCore.setTextPosition(newTextNum, 300, 150);GameCore.setTextColor(newTextNum, Color.RED);GameCore.setTextFontSize(newTextNum, 88);GameCore.pause(3000);GameCore.exit();}}//判断女精灵和任意炸弹的距离&#xff0c;足够接近炸弹就爆炸&#xff0c;游戏失败for (int i &#61; 0; i
GameCore.hideSprite(bombNum[i]);//出现新爆炸精灵GameCore.playSpriteAnimate(newBombNum, "fire", true);//在原来炸弹的位置出现新炸弹
GameCore.setSpritePosition(newBombNum, pBomb.x, pBomb.y);GameCore.pause(3000);//输出文本GameCore.createText(newTextNum, "You Lose");GameCore.setTextPosition(newTextNum, 300, 150);GameCore.setTextColor(newTextNum, Color.RED);GameCore.setTextFontSize(newTextNum, 88);GameCore.pause(2500);GameCore.exit();}}//设置游戏倒计时的时间结束点long timeEnd&#61;System.currentTimeMillis();int timeText&#61;(int)(60-(timeEnd-timeBegin)/1000);GameCore.setText(4, Integer.toString(timeText));if(timeText&#61;&#61;0) {GameCore.alert("游戏通关时间已到&#xff0c;即将结束。");GameCore.exit();}}}
}
&#xff08;1&#xff09;新增炸弹功能&#xff0c;精灵如果吃到炸弹立即死亡&#xff0c;游戏结束&#xff1b;
&#xff08;2&#xff09;新增游戏倒计时功能&#xff0c;倒计时60秒
&#xff08;3&#xff09;新增游戏胜利失败功能&#xff0c;吃完金币则胜利&#xff0c;吃到炸弹失败
游戏包及素材下载地址&#xff1a;
https://pan.baidu.com/s/1jHI54Po