首先测试新项目是否好用
项目一数组格式;
public class day1 {
public static void main(String[] args) {
System.out.println("a");
}
}
//测试好用。可以正常运行
//项目一:什么是数组。
//数组是存储数据固定长度的容器,保证多个数据的数据类型要一致
//什么是容器——将多个同类型的数据存储到一起每个数据是容器的元素
//数组的特点:存储数据的容器、元素类型一样,可以基本数据类型,也可引用数据类型
//数组的格式
class work1 {
public static void main(String[] args) {
//数组的格式
//第一种(常用)
int[] arr1;
//第二种
int arr3[];
//数组的初始化
//第一种动态初始化
String[] arr4=new String[2];
//静态初始化
//完整版
int[] arr5=new int[]{1,2};
//简化格式
int[] arr={1,2,3,4};
System.out.println(arr);
}
}
项目2数组访问以及遍历
//项目2数组访问以及遍历
// 索引——每一个存储到数组的元素,都会自动的拥有一个编号,
// 从0开始,这个自动编号称为数组索引(index)(下标),可以通过数组的索引访问到数组中的元素。
class work2{
public static void main(String[] args) {
int[] ar=new int[3];//动态初始化的数组,没有给数组赋值,数组中的元素会使用默认值
int x=1;
//给数组赋值
ar[0]=15;
ar[1]=4;
ar[2]=33;
System.out.println(ar[1]);
}
}
//数组的遍历
class work3{
public static void main(String[] args) {
int[] arr={1,2,3,4,5,6};
//每个数组具有长度而且是固定的
//获取长度使用length
int a=arr.length;
// System.out.println(a);
//数组的最大索引值为arr.length-1
for(int i=0;i<=a-1;i++){
System.out.println(arr[i]);
}
}
}
## /项目3 获取数组中的最大值
//项目3
// 数组练习 获取数组中的最大值
//实现思路
/*
1、定义变量赋值给数组0上面的元素
2、遍历数组,获取数组的每个元素
3、将遍历到的元素和保存数组0索引上的变量进行比较
4、如果数组元素的值大于变量的值赋值给变量
5、数组循环变量结束,变量保存的就是最大的值
* */
class work4{
public static void main(String[] args) {
int a=0;
int[] arr=new int[]{3,5,7,9,13,33,53,73,93,103};
for (int i=0;i<=arr.length-1;i++){
if(arr[0]<arr[i]){
arr[0]=arr[i];
}
}
System.out.println(arr[0]);
}
}
项目3-2 数组的翻转
//练习2数组的翻转
/* 数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1
1、定义两个变量,保存数组的最小索引和最大索引
2、实现翻转就要把最大的索引和最小的索引位置互换
3、最小索引++,最大索引--,再次交换位置
最小索引超过了最大索引,数组反转操作结束
*/
class work5 {
public static void main(String[] args) {
int [] arr={1,2,3,4,5};
int a=arr.length-1;
for (int i=0;i<a;i++){
int x=arr[i];
arr[i]=arr[a];
arr[a]=x;
a--;
System.out.println(i);
}
for (int j=0;j<arr.length;j++){
System.out.print(arr[j]+",");
}
}
}
项目4 数组原理内存图
//数组原理内存图
//堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
//方法栈(栈内存)方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
class work6{
public static void main(String[] args) {
int[] arr ={1,2,3,4,5};
int[] arr2=arr;
arr2[1]=9;
System.out.println(arr[1]);//也是9,因为数组arr和arr2使用的同一个地址,元素改变会一同更新
}
项目5,冒泡排序
class work7 {
public static void main(String[] args) {
int[] arr={3,9,14,34,71,89,53,64,91,43};
//对数组排序
//思维——使用冒泡方法
//1、冒泡是使用首个元素对后面的依次进行比较,大的赋值个首个元素
//n个元素只需要排n-1次
//内层循环比较的次数应该越来越少(每次排序后,大数已经沉底,
// 下次在比较时不需要再和已经确定位置的元素进行比较)
for (int j=0;j<arr.length-1;j++){
for (int i=0;i<arr.length-1-j;i++){
if (arr[i]>arr[i+1]) {
int d=arr[i];
arr[i]=arr[i+1];
arr[i+1]=d;
}
}
}
for(int i=0;i<arr.length-1;i++){
System.out.print(arr[i]+",");
}
}
}
项目6 求日期第多少天
/*求下面日期是这年中的第多少天?
int year = 2004;
int month = 3;
int day = 25;
*/
/*
思路,1、先判断什么是闰年
2、用数组对月份进行编写
3、遍历出已经过去的月份,再加上本月已过的天数最后相加得出总天数
*/
class work8{
//首先判断年份是否是闰年的方法
public static boolean isRunNian(int year) {
boolean flag=false;
if(year%4==0&&year%100!=0||year%400==0){
flag=true;
}
return flag;
}
public static void main(String[] args) {
System.out.println("请输入年份:");
Scanner sc=new Scanner(System.in);
int year=sc.nextInt();
System.out.println("请输入月份:");
Scanner sc1=new Scanner(System.in);
int month=sc1.nextInt();
System.out.println("请输入日:");
Scanner sc2=new Scanner(System.in);
int day=sc2.nextInt();
//编写月份的数组
int[] arr={31,28,31,30,31,30,31,31,30,31,30,31};
//引入数据判断
if (isRunNian(year)){
arr[1]=29;
}
//定义一个接收变量
int num=0;
//过去的月份为mouth-1
for(int i=0;i<month-1;i++){
num=num+arr[i];
}
num=num+day;
System.out.println(year+"年已经过了"+num+"天");
}
}
项目七 数组异常和二维数组
//数组异常,二维数组
//越界异常Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
/*
class work9{
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
System.out.println(arr[5]);
}
}
*/
//解决方式,循环避免越界
class work9{
public static void main(String[] args) {
int[] arr={1,2,3};
for (int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
//System.out.print(i+",");
}
}
}
//空指针异常 NullPointerException
class work10{
public static void main(String[] args) {
int[] arr={1,2,4};
arr=null;
if (arr!=null) {
System.out.println(arr[1]);
}
}
}
//解决方法——调用方法之前判断是否为null
项目7-2二维数组
//二维数组就是关于数组的数组
class work11{
public static void main(String[] args) {
int[][] arr=new int[4][];
}
}
//二维数组的遍历
class work12{
public static void main(String[] args) {
int[][] arr={{1,2,3},{3,4,5},{8,7,9}};
for (int i=0;i<arr.length;i++) {
for (int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
}
System.out.println();
}
}
项目八 定义方法
//1.分别定义方法,求一个整数数组的最大值、最小值、平均值和所有数组元素的和(4个方法)
class homework {
public static int max(int[] arr) {
for (int i=0;i<arr.length;i++){
if (arr[0]<arr[i]){
arr[0]=arr[i];
}
}
return arr[0];
}
public static int min(int[] arr) {
for (int i=0;i<arr.length;i++){
if (arr[0]>arr[i]){
arr[0]=arr[i];
}
}
return arr[0];
}
public static int num(int[] arr) {
int arr1=0;
for (int i=0;i<arr.length;i++){
arr1=arr1+arr[i];
}
return arr1;
}
}
项目九 复制数组
//2.将一个已知数组 int[] a = {11,23,1,5,6,89} 中的元素 复制到一个新数组中
class work13{
public static void main(String[] args) {
int[] a={11,23,1,5,6,89};
int[] b=new int[a.length-1];
int j;
for (j=0; j<a.length-1; j++){
b[j] = a[j];
System.out.println(b[j]);
}
}
}
项目十 数组反转
//3 数组反转 int[] a = {1,2,3,4,5};创建新数组的方式
class work14{
public static void main(String[] args) {
int[] a={1,2,3,4,5};
//最大索引
int m=a.length-1;
for (int i = 0; i<m; i++) {
int x=a[i];
a[i]=a[m];
a[m]=x;
m--;
}
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+",");
}
}