目录
一、翻转数组
2.尝试设计一组循环语句,将以上形式的输出结果翻转为以下形式(旋转 90 度):
package array;
public class Nine01 {
public static void main(String[] args) {
/*
春眠不觉晓,处处闻啼鸟
*/
char[][] chunxiao={{'春','眠','不','觉','晓'},
{'处','处','闻','啼','鸟'},
{'夜','来','风','雨','声'},
{'花','落','知','多','少'},};
for (int i=0;i<chunxiao.length;i++){
for (int j=0;j<chunxiao[i].length;j++){
System.out.print(chunxiao[i][j]+"\t");
}
System.out.println();
}
System.out.println();
//竖着输出
for (int j=0;j<chunxiao[0].length;j++) {
for (int i = chunxiao.length - 1; i >= 0; i--) {
System.out.print(chunxiao[i][j]+"\t");
}
System.out.println();
}
}
}
PS:拓展题
package array;
public class Nine01_01 {
public static void main(String[] args) {
char[][] poem = {
{'十', '年', '生', '死', '两', '茫', '茫', '\u002C', '不', '思', '量', '\u002C', '自', '难', '忘'},
{'千', '里', '孤', '坟', '\u002C', '无', '处', '话', '凄', '凉', '\u3002'}, // 1 11
{'纵', '使', '相', '逢', '应', '不', '识', '\u002C', '尘', '满', '面', '\u002C', '鬓', '如', '霜'},
{'夜', '来', '幽', '梦', '忽', '还', '乡', '\u002C', '小', '轩', '窗', '\u002C', '正', '梳', '妆'},
{'相', '顾', '无', '言', ',', '惟', '有', '泪', '千', '行', '\u3002'},
{'料', '得', '年', '年', '肠', '断', '处', '\u002C', '明', '月', '夜', '\u002C', '短', '松', '冈'}
};
int max=poem[0].length;
for (int i=0;i< poem.length;i++){
max=Math.max(max, poem[i].length);
}
for (int i = 0; i < poem[0].length; i++) { // 行, 每个元素(一维数组)的元素的下标
for (int j = poem.length - 1; j >= 0; j--) { // 列, 二维数组的元素的下标
if (i >= poem[j].length){ // 越界
System.out.print(" " + "\t");
} else{
System.out.print(poem[j][i] + "\t");
}
}
System.out.println();
}
}
}
二、数组排序
1. 设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )
2. 设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和
该学生的成绩、该学生的总成绩
package array;
import java.util.Arrays;
public class Nine02 {
public static void main(String[] args) {
//安琪拉
//存放学生姓名
String[] names={"安琪拉","王昭君","蔡文姬","是妲己","是张良"};
//存放课程名称
String[] courses={"C++","Java","Python"};
//存放成绩
int[][] scores={{90,89,75},
{59,40,100},
{100,99,80},
{80,61,61},
{60,100,99}};
for (int i=0;i< scores.length;i++){
System.out.print(names[i]+"=>");
for (int j=0;j<scores[i].length;j++){
System.out.print(courses[j]+":");
System.out.print(scores[i][j]+" ");
}
System.out.println();
}
System.out.println();
//设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )
for (int i = 0; i < scores.length; i++) {
for (int j = 0; j < scores.length-1-i; j++) {
if (scores[j][1]<scores[j+1][1]){
int[] temp=scores[j];
scores[j]=scores[j+1];
scores[j+1]=temp;
//名字顺序
String temp1=names[j];
names[j]=names[j+1];
names[j+1]=temp1;
}
}
}
for (int i=0;i<scores.length;i++){
for (int j = 0; j < scores[i].length; j++) {
System.out.print(scores[i][j]+" ");
}
System.out.println();
}
/*设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和
该学生的成绩、该学生的总成绩*/
System.out.println();
int[] sumArr=new int[scores.length];
for (int i = 0; i < scores.length; i++) {
int sum=0;
for (int j = 0; j < scores[i].length; j++) {
sum=sum+scores[i][j];
}
sumArr[i]=sum;
}
System.out.println(Arrays.toString(sumArr));
System.out.println();
for (int i = 0; i < sumArr.length; i++) {
for (int j = 0; j < sumArr.length-1-i; j++) {
if (sumArr[j]<sumArr[j+1]){
//总分顺序
int temp=sumArr[j];
sumArr[j]=sumArr[j+1];
sumArr[j+1]=temp;
//各科顺序
int[] temp1=scores[j];
scores[j]=scores[j+1];
scores[j+1]=temp1;
//名字顺序
String temp2= names[j];
names[j]=names[j+1];
names[j+1]=temp2;
}
}
}
System.out.println(Arrays.toString(sumArr));
System.out.print("学生姓名 ");
//课程名称
for (int i = 0; i < courses.length; i++) {
System.out.print(courses[i]+" ");
}
//
System.out.print("总成绩");
System.out.println();
for (int i = 0; i < sumArr.length; i++) {
System.out.print(names[i]+"\t");
for (int j = 0; j < scores[i].length; j++) {
System.out.print(scores[i][j]+"\t");
}
System.out.print("\t"+sumArr[i]);
System.out.println();
}
}
}
三、杨辉三角
package array;
import java.util.Scanner;
public class Nine03 {
public static void main(String[] args) {
/*
编写一个程序,生成一个给定行数的杨辉三角
*/
Scanner sc=new Scanner(System.in);
System.out.println("请输入n:");
int n=sc.nextInt();
int[][] arr=new int[n][];
for (int i = 0; i < arr.length; i++) {
arr[i]=new int[i+1];//开辟内存空间
for (int j = 0; j < arr[i].length; j++) {
if (j==0||j==arr[i].length-1) {
arr[i][j] = 1;
}else {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
四、复制数组
有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums。
1.for 循环
package array;
public class Nine04 {
public static void main(String[] args) {
/*
有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums
*/
int[] nums={2,11,33,44,55,66,277};
int[] newNums=new int[nums.length];
int index=0;
for (int i = 0; i < nums.length; i++) {
if (nums[i]==33){
index=i;
}
}
System.out.println("33的下标是:"+index);
for (int i=0;i<nums.length;i++){
if (i==index){
continue ;
}
newNums[i] = nums[i];
System.out.print(newNums[i]+"\t");
}
}
}
2.System 类中的 arraycopy 方法
package array;
import java.util.Arrays;
public class Nine04 {
public static void main(String[] args) {
/*
有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums
*/
int[] nums={2,11,33,44,55,66,277};
//arraycopy
int[] newNums=new int[nums.length-1];
int index=Arrays.binarySearch(nums,33);
System.out.println(index);
System.arraycopy(nums,0,newNums,0,index);
System.arraycopy(nums,index+1,newNums,index,nums.length-1-index);
System.out.println(Arrays.toString(newNums));
}
}
PS:拓展题
给arr的第3位添加数据6
package array;
import java.util.Arrays;
public class Nine04_4 {
public static void main(String[] args) {
/*
给arr的第3位添加数据6
*/
int index=3;
int val=6;
int[] arr={1,2,3,4,5};
int[] arr1=Arrays.copyOf(arr,arr.length+1);
System.out.println(Arrays.toString(arr1));
System.arraycopy(arr1,index,arr1,index+1,arr1.length-1-index);
arr1[index]=val;
System.out.println(Arrays.toString(arr1));
}
}