JAVA问题,求教

2024-12-28 03:17:55
推荐回答(2个)
回答1:

//这些题目都不是很复杂,有些题目就不加注释了,你可能看的不太懂的是填充二维数组的那段程序,思考下那个段注释就能明白啦
//打印下半三角的,就是找规律,他的x和y的关系,他们加起来的值都是大于等于4

//第四题感觉是考你后++/--的使用技巧

//杨辉三角的话,网上很多例子,我这只是随便写的
package test;

import java.util.Arrays;
import java.util.Scanner;

public class Exam18151116 {
public static void main(String[] args) {
q1();
q2();
q3();
q4();
q5();
// q1==================================================
// 输入十个数,以空格分割:1 2 3 4 5 6 7 8 9 10
// 第1个数(还差9个):1.0
// 第2个数(还差8个):2.0
// 第3个数(还差7个):3.0
// 第4个数(还差6个):4.0
// 第5个数(还差5个):5.0
// 第6个数(还差4个):6.0
// 第7个数(还差3个):7.0
// 第8个数(还差2个):8.0
// 第9个数(还差1个):9.0
// 第10个数(还差0个):10.0
// 10个数:[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
// 输入一个数:
// 1
// 删除第0个数:1.0
// q2==================================================
// 输入6个数:
// 123 456 789 963 852 741
// [123.0, 456.0, 789.0]
// [963.0, 852.0, 741.0]
// 最大值是:963.0;坐标:[1][0]
// q3==================================================
// [ 1,  2,  3,  4,  5]
// [ 6,  7,  8,  9, 10]
// [11, 12, 13, 14, 15]
// [16, 17, 18, 19, 20]
// [21, 22, 23, 24, 25]
//             5
//           9 10
//       13 14 15
//    17 18 19 20
// 21 22 23 24 25
// q4==================================================
// [15, 14, 13, 12]
// [11, 10,  9,  8, 7]
// [ 6,  5,  4,  3, 2, 1]
// q5==================================================
// [1]
// [1, 1]
// [1, 2, 1]
// [1, 3, 3, 1]
// [1, 4, 6, 4, 1]
// [1, 5, 10, 10, 5, 1]
// [1, 6, 15, 20, 15, 6, 1]
}

public static void q1() {
System.out
.println("q1==================================================");
Scanner sc = new Scanner(System.in);
Double[] nums = new Double[10];
System.out.print("输入十个数,以空格分割:");
int i = 0;
while (i < 10) {
try {
nums[i] = sc.nextDouble();
System.out.println("第" + (i + 1) + "个数(还差"
+ (nums.length - i - 1) + "个):" + nums[i]);
i++;
} catch (Exception e) {
}
}
System.out.println(nums.length + "个数:" + Arrays.toString(nums));
System.out.println("输入一个数:");
Double num = null;
while (num == null) {
try {
num = sc.nextDouble();
} catch (Exception e) {
System.out.println("输入出错,输入一个数:");
sc.nextLine();
}
}
for (int index = 0; index < nums.length; index++) {
if (num.doubleValue() == nums[index]) {
System.out.println("删除第" + index + "个数:" + num);
nums[index] = null;
}
}
// sc.close();
}

public static void q2() {
System.out
.println("q2==================================================");
Scanner sc = new Scanner(System.in);
int x = 3, y = 2;
Double[][] data = new Double[y][x];
System.out.println("输入" + (x * y) + "个数:");
int count = 0;
while (count < x * y) {
Double num = null;
while (num == null) {
try {
num = sc.nextDouble();
} catch (Exception e) {
e.printStackTrace();
System.out.println("请输入一个数");
sc.nextLine();
}
}
// 下面填充数据的大致思路是
// [][][]
// [][][]
// 5/(3)=1 5%3=2 >>所以第6个数(index是5)在data[1][2]
// 2/(3)=0 2%3=2 >>所以第3个数(index是2)在data[0][2]
data[count / x][count % x] = num;
count++;
}
for (Double[] doubles : data) {
System.out.println(Arrays.toString(doubles));
}

int mx = 0, my = 0;
double max = 0.0;
for (int dy = 0; dy < data.length; dy++) {
Double[] line = data[dy];
for (int dx = 0; dx < line.length; dx++) {
Double item = line[dx];
if (item.doubleValue() > max) {
mx = dx;
my = dy;
max = item.doubleValue();
}
}
}
System.out.println("最大值是:" + max + ";坐标:[" + my + "][" + mx + "]");
sc.nextLine();
}

public static void q3() {
System.out
.println("q3==================================================");
int x = 5, y = 5;
Integer[][] data = new Integer[y][x];
int count = 0;
while (count < x * y) {
Integer num = null;
num = Integer.valueOf(count + 1);
// 下面填充数据的大致思路是
// [][][]
// [][][]
// 5/(3)=1 5%3=2 >>所以第6个数(index是5)在data[1][2]
// 2/(3)=0 2%3=2 >>所以第3个数(index是2)在data[0][2]
data[count / x][count % x] = num;
count++;
}
for (Integer[] doubles : data) {
System.out.println(Arrays.toString(doubles));
}
for (int dy = 0; dy < data.length; dy++) {
Integer[] line = data[dy];
for (int dx = 0; dx < line.length; dx++) {
if (dx + dy >= 4) {
System.out.print(data[dy][dx]);
} else {
System.out.print(" ");
}
System.out.print("\t");
}
System.out.println();
}
}

public static void q4() {
System.out
.println("q4==================================================");
int y = 3, startnum = 15, startcount = 4;
int[][] data = new int[y][];

for (int i = 0; i < data.length; i++) {
int[] lineData = new int[startcount++];
for (int j = 0; j < lineData.length; j++) {
lineData[j] = startnum--;
}
data[i] = lineData;
System.out.println(Arrays.toString(lineData));
}
}

public static void q5() {
System.out
.println("q5==================================================");
int max = 7;
int[][] data = new int[max][];
for (int y = 0; y < data.length; y++) {
int[] line = new int[y + 1];
line[0] = 1;// 每行第一个数
if (y > 0)// 因为第一行再也没有上一行的数据了,所以是从第二行开始
for (int x = 1; x < line.length - 1; x++) {// 这里只填充除了首位外的数,因为第二行只有头和尾,没有中间的数,所以这段循环体不会执行
line[x] = data[y - 1][x] + data[y - 1][x - 1];
}
line[line.length - 1] = 1;// 每行最后一个数,第一行只有一个数,所以length-1也是第一个数
data[y] = line;
System.out.println(Arrays.toString(line));
}
}
}

回答2:

1、

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        int[] arr = new int[10];
        Scanner in = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个数字");
            int num = in.nextInt();
            arr[i] = num;
        }
        System.out.println("输入完成,结果为:");
        printArr(arr);

        System.out.println("请输入需要删除的数字:");
        int input = in.nextInt();
        // 找到对应数字所对应的下标
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if (input == arr[i]) {
                index = i;
            }
        }
        if (index > -1) {
            int[] newArr = new int[9];
            int j = 0;
            for (int i = 0; i < arr.length; i++) {
                if (i != index) {
                    newArr[j] = arr[i];
                    j++;
                }
            }
            System.out.println("修改后数组");
            printArr(newArr);
        } else {
            System.out.println("未找到对应数字,输出原始数组");
            printArr(arr);
        }
    }


    // 打印数组
    static void printArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();
    }
}

2、

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        int[][] arr = new int[2][3];
        Scanner in = new Scanner(System.in);
        int index = 1;
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.println("请输入第" + (index++) + "个数字");
                int num = in.nextInt();
                arr[i][j] = num;
            }
        }
        System.out.println("输入完成,结果为:");
        printArr(arr);

        int max = arr[0][0];
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if (arr[i][j] > max) {
                    max = arr[i][j];
                }
            }
        }
        System.out.println("最大值为:" + max);

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if (arr[i][j] == max) {
                    System.out.println("最大值下标为:i=" + i + ",j=" + j);
                }
            }
        }
    }


    // 打印数组
    static void printArr(int[][] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                System.out.print(arr[i][j] + "\t");
            }
            System.out.println();
        }
        System.out.println();
    }
}

5、输出杨辉三角

public static void main(String[] args) {
    // 存储前一行的数据
    int[] pre = null;
    for (int i = 0; i < 10; i++) {
        int[] tmp = new int[i];
        for (int j = 0; j < i; j++) {
            if (j == 0 || j == tmp.length - 1) {
                // 两侧的永远是1 j=0和j=tmp.length-1表示是第一列和最后一列
                tmp[j] = 1;
            } else {
                // 下一行是上一行对应列和前一列的和
                tmp[j] = pre[j - 1] + pre[j];
            }
        }
        printArr(tmp);
        pre = tmp;
    }
}

// 打印
static void printArr(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + "\t");
    }
    System.out.println();
}