- 1.数组定义格式(相同类型)引用类型
1)格式一:数据类型【】变量名 eg.int[] arr;
定义了一个int类型的数组,数组名是arr;
2)格式二:数据类型 变量名【】 eg.int arr【】
定义了一个int类型的变量,变量名是arr数组
- 2.数组初始化
1)动态初始化:数据类型【】变量名=new 数据类型【数组长度】
eg.int[] arr=new arr[3];
2) 静态初始化:数据类型【】变量名=(new 数据类型【】){数据1,数据2,数据3......}
- 3.内存分配
1)栈内存,局部变量,就是地址
2)堆内存,new之后数据
任何两个指向相同的数组,当一个数组发生改变,另一个数组也发生改变。
- 4.常见问题
索引越界,超出:ArrayIndexOutOfBoundsException
空指针异常,null:NullPointerException
- 5.遍历
for循环进行遍历, 数组名.length
int[] arr={......};
for(int i=0;i<arr.length;i++){
arr[i];//对arr进行操作
}
- 6.获取最值
public class Zuidazhi { public static void main(String[] args){ int[]arr={22,23,45,2};//定义数组 int max=arr[0]; for(int i=0;i<arr.length;i++){ if(arr[i]>max)max=arr[i]; } System.out.println(max); } }
例题:
7-1 有重复的数据 (10 分)
在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“
YES
”这三个字母;如果没有,则输出“NO
”。输入格式:
你的程序首先会读到一个正整数n,n∈[1,100000],然后是n个整数。
输出格式:
如果这些整数中存在重复的,就输出:
YES
否则,就输出:
NO
输入样例:
5 1 2 3 1 4
输出样例:
YES
//内存超出,但结果正确
import java.util.Scanner;
public class Chongfudeshu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
int t = 0,s=0;
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();//数组的输入
}
if (n == 1) System.out.println("NO");//注意单个数据的判断
else {
for (int i = 0; i < n; i++) {
if(s==1)break;//计数,防止多个yes输出
for (int j = i + 1; j < n; j++) {
if (a[i] == a[j]) {
System.out.println("YES");
s=1;
break;
}
t++;//计数
}
}
}
if (t == n) System.out.println("NO");
}
}
7-2 摘苹果 (5 分)
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出很多苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知每个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入格式:
包括三行数据。 第一行是一个整数n,表示有n个苹果。苹果至少有一个,不超过1000个。 第二行包含n个100到200之间(包括100和200)的整数(以厘米为单位)分别表示这n个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。 第三行是一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出格式:
一个整数,表示陶陶能够摘到的苹果的数目。
输入样例:
10 100 200 150 140 129 134 167 198 200 111 110
输出样例:
5
import java.util.Scanner;
public class Zhaipingguo {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);//注意括号里的字母
int n=sc.nextInt();
int[]a=new int [n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
}
int m= sc.nextInt();
int t=0;
for (int i=0;i<n;i++){
if(m>=(a[i]-30))t++;
}
System.out.println(t);
}
}
7-3 jmu-Java-01入门-取数字浮点数 (2 分)
本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。
输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。
输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。
输入样例:
-123.01 234
输出样例:
7
9
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (true){
String s = sc.nextLine();
char[] chars = s.toCharArray();
int sum=0;
for (int i=0;i<chars.length;i++){
if (chars[i]=='-'||chars[i]=='+'||chars[i]=='.') {
}else {
//计算char类型大小时,转int时需要-‘0’或者-48
int tmp=Integer.valueOf(chars[i])-48;
sum+=tmp;
}
}
System.out.println(sum);
}
}
}