int[ ]arr = new int[3]==>动态初始化。
int[ ]arr = {1,2,3}==>静态初始化。
Java没有多维数组,二维数组实际上是一维数组的一维数组。
例子1:
/*分析以下需求,并用代码实现:
(1)打印由7,8,9三个数组组成的三位数,要求该三位数中任意两位数字不能相同
(2)打印格式最后的三位数字以空格分隔,如789 798 879 897 978 987
提示: 考虑使用for循环的嵌套
*/
public class Test1 {
public static void main(String[] args) {
//这种方法最简单
for(int i=789;i<=987;i++){
String s = String.valueOf(i);
if(s.contains("7")&&s.contains("8")&&s.contains("9")){
System.out.println(s);
/*char[] ch = { '7', '8', '9' };
StringBuffer sb = new StringBuffer();
// 要是比较四个数 就多加一个for循环 把比较条件添加上就行了
for (int i = 0; i < ch.length; i++) {
for (int j = 0; j < ch.length; j++) {
for (int j2 = 0; j2 < ch.length; j2++) {
if (i != j && j != j2 && i != j2) { sb.append(ch[i]).append(ch[j]).append(ch[j2]).append(" ");
}}}}
System.out.println(sb);*/
}}}}
例子2:
/*数组去重问题
存在该数组: int[] arr = { 16, 23, 9, 6, 1, 23, 6, 7, 8, 23 };
去除上面定义的数组中的重复元素,把去重复后的元素存入新数组中,并打印新数组中的元素*/
public class Test2 {
public static void main(String[] args) {
int[] arr = { 16, 0, 23, 0, 9, 6, 0, 1, 23, 6, 0, 7, 8, 23 };
// 1.创建新数组
int[] newArr = new int[arr.length];
int count = step1(arr, newArr);
print(newArr);
int[] newArr2 = new int[count];
step2(newArr, newArr2, count);
print(newArr2);
}
public static void step2(int[] newArr, int[] newArr2, int count) {
for (int i = 0; i < count; i++) {
newArr2[i] = newArr[i];
}}
public static int step1(int[] arr, int[] newArr) {
int count = 0;
for (int i = 0; i < arr.length; i++) {
boolean b = true;
for (int j = 0; j < count; j++) {//这一步 把j
if (arr[i] == newArr[j]) {
b = false;
break;
}}
if (b) {
newArr[count] = arr[i];//要出现重复的元素 就必须是两个以上 所以进入上面判断的时候 count就起码等于1 循环成立
count++;
}}
return count;
}
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}}
例子4:
/*请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
*/
public class Test4 {
public static void main(String[] args) {
/*String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" };
String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" };
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请输入第一个字母:");
String s1 = sc.nextLine();
for (int i = 0; i < arr.length; i++) {
if(arr[i].toUpperCase().equals(s1.toUpperCase())){
System.out.println("星期"+arrWeek[i]);
return;
}
if(arr[i].toUpperCase().startsWith(s1.toUpperCase())){
System.out.println("请输入第二个字母");
String s2 = sc.nextLine();
s1+=s2;
//i--;//很重要!!!
}}
System.out.println("未查找到对应星期, 请重新输入");
}*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入对应的星期");
while (true) {
String line = sc.nextLine();
if ("M".equals(line) || "W".equals(line) || "F".equals(line) || "".equals(line)) {
print(line);
break;
} else if ("T".equals(line)) {
String line2 = sc.nextLine();
if ("u".equals(line2) || "h".equals(line2)) {
print(line + line2);
// 这里要传入两次判断的字符串 即T+h或者T+u 只传入单一的line不能匹配
break;
}
} else if ("S".equals(line)) {
String line3 = sc.nextLine();
if ("a".equals(line3) || "u".equals(line3)) {
print(line3);
break;
}
} else {
System.out.println("请继续录入");
}}}
// 打印方法
private static void print(String line) {
int index = getIndex(line);
System.out.println(index);
String st = getWeek(index);
System.out.println("星期" + st);
}
// 找到索引后 进入这个查找对应的星期
private static String getWeek(int index) {
String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" };
String s = "";
for (int i = 0; i < arrWeek.length; i++) {
if (index == i) {
s = arrWeek[i];
}}
return s;
}
// 当用户输入字母的时候 进入这个方法查询对应的索引
public static int getIndex(String line) {
String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" };
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (line.equals(arr[i])) {
index = i;
}}
return index;
}}
例子5:
public class Test5 {
public static void main(String[] args) throws IOException {
Scanner xx = new Scanner(System.in);
System.out.println("请输入行数:");
int row = xx.nextInt();
System.out.println("请输入列数:");
int coulumn = xx.nextInt();
pdd(row,coulumn);
}
public static void pdd(int a,int b){
for(int x=1;x<=a;x++){
for(int y=1;y<=x && y<=b;y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}}}
例子6:
public class Test6 {
public static void main(String[] args) {
int i,j;
for(i=1;i<=5;i++){
for(j=2;j<=6-i;j++){
System.out.print(" ");
}
for(j=2;j<=i*2;j++){
System.out.print("*");
}
System.out.println();
}
for(i=6;i<=9;i++){
for(j=1;j<=i-5;j++){
System.out.print(" ");
}
for(j=1;j<=(10-i)*2-1;j++){
System.out.print("*");
}
System.out.println();
}}}
例子7:
/**
* 打印1-100之间的所有素数及个数 提示: 大于1的且只能被1和其本身整除的数叫素数 如:2 3 5 7 11
*/
public class Test7 {
public static void main(String[] args) {
// 1.遍历1~100
for (int i = 2; i <= 100; i++) {
// 2.调用判断素数的方法
if (isPrime(i)) {
System.out.print(i + " ");
}}}
/*返回值类型: boolean 方法名: isPrime 参数列表: int x 当该方法返回值为true时是素数
*/
private static boolean isPrime(int x) {
// 1.定义布尔类型的标识符b
boolean b = true;
// 2.从2开始遍历一直到x-1
for (int i = 2; i < x; i++) {// 这里可以试数进行验证
// 3.只要满足对i取模等于0,则证明不是素数,此时将b置为false,并结束循环
if (x % i == 0) {
b = false;
break;
}}
// 4.将值返回
return b;
}}
例子8:
public class Test08 {
/*二维数组问题
假如2019CBA赛季要开始了,每个人会有三个单场篮球比赛,博彩公司预测一下几个人的单场得分分别是:
姚明:22,33,44
易建联:12,8,14
王治郅:33,45,65
朱芳雨:11,66,99
(1)求四个人的总得分之和
(2)求四个人中单场得分最高分
(3)求去掉单场最高分和最低分,四个人的得分总和的平均分*/
static int i,j;
static int count;
public static void main(String[] args) {
int[][]arr={{22,33,44},{12,8,14},{33,45,65},{11,66,99}};
int a=getZongFen(arr);
System.out.println("总分为"+a);
int b=getZhongChang(arr);
System.out.println("四人中场最高分是"+b);
int max = getZuiMax(arr);
int min = getZuiMin(arr);
System.out.println("四人总和的平均分是"+1.0*(a-max-min)/(count-2));
}
//4.求单场最低分
private static int getZuiMin(int[][] arr) {
int min=arr[0][0];
for (i = 0; i < arr.length; i++) {
for (j = 0; j < arr[i].length; j++) {
if(min>arr[i][j]){
min=arr[i][j];
}
}
}
return min;
}
//3.求单场最高分
private static int getZuiMax(int[][] arr) {
int max=arr[0][0];
for (i = 0; i < arr.length; i++) {
for (j = 0; j < arr[i].length; j++) {
if(max<arr[i][j]){
max=arr[i][j];
}
}
}
return max;
}
//2.求中场得分最高的
private static int getZhongChang(int[][] arr) {
int max=arr[0][1];
for (i = 0; i < arr.length; i++) {
for (j = 1; j < arr[i].length-1; j++) {
if(max<arr[i][j]){
max=arr[i][j];
}
}
}
return max;
}
//1.求总分
private static int getZongFen(int[][]arr) {
int sum=0;
for (i = 0; i < arr.length; i++) {
for (j = 0; j < arr[i].length; j++) {
sum+=arr[i][j];
count++;
}
}
return sum;
}
}
例子9:
/**
* 打印1到100之内的整数,但数字中包含9的要跳过
每行输出5个满足条件的数,之间用空格分隔
*/
public class Test9 {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
int ge = i % 10;
int shi = i / 10;
if (ge == 9 || shi == 9) {
continue;
}
System.out.print(i + "\t");
count++;
if (count % 5 == 0) {
System.out.println();
}}}}