Java语言程序设计(基础篇)(原书第10版) 练习题答案 第7章

这篇博客包含了Java语言基础篇的多个章节练习题答案,包括数字操作、数组处理、排序算法等内容。虽然提供的代码可能非最优,但确保每个程序都能正常运行。作者欢迎读者交流更佳解决方案。
摘要由CSDN通过智能技术生成

基础篇课后习题答案,做了大部分,虽然不一定是最佳代码,但是保证每个都能运行,如有更好的答案,欢迎讨论

 

7.1 指定等级

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入学生人数:");
    int num = scanner.nextInt();
    int[] grade = new int[num];
    System.out.print("请输入所有分数:");

    for (int i = 0; i < num; i++) {
        grade[i] = scanner.nextInt();
        if (grade[i] > 100 || grade[i] < 0) {
            System.out.print("无效成绩");
            System.exit(1);
        }
    }
    for (int i = 0; i < num; i++) {
        System.out.println("第" + (i + 1) + "位学生的分数是" + grade[i] + "分,对应的成绩为" + result(grade[i]));
    }
}

private static char result(int grade) {
    char[] result = {'A', 'B', 'C', 'D', 'F'};
    int i;
    if (grade >= 90 && grade <= 100) {
        i = 0;
    } else if (grade >= 80 && grade < 90) {
        i = 1;
    } else if (grade >= 70 && grade < 80) {
        i = 2;
    } else if (grade >= 60 && grade < 70) {
        i = 3;
    } else {
        i = 4;
    }
    return result[i];
}

 

7.2 数字倒置

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入10个整数:");
    int[] num = new int[10];
    for (int i = 0; i < 10; i++) {
        num[i] = scanner.nextInt();
    }
    for (int i : newNum(num)) {
        System.out.print(i + " ");
    }
}

private static int[] newNum(int[] num) {
    int tmp;
    for (int i = 0; i < num.length / 2; i++) {
        tmp = num[i];
        num[i] = num[num.length - 1 - i];
        num[num.length - 1 - i] = tmp;
    }
    return num;
}

 

7.3 计算数字出现的次数

public static void main(String[] args) {
    int[] num = createArrays();
    Arrays.sort(num);
    System.out.println("数据升序排列后为:" + Arrays.toString(num));
    for (int i = 0; i < num.length; i++) {
        if (i == 0 || (num[i] != num[i - 1])) {
            System.out.println(num[i] + "在数组中出现了" + getCount(num[i], num) + "次");
        }
    }
}

private static int[] createArrays() {
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入1~100之间的整数(以0作为结束):");
    int[] num = new int[100];
    int i = 0;
    int input;
    while (i >= 0) {
        input = scanner.nextInt();
        if (input != 0) {
            num[i] = input;
            i++;
        } else {
            break;
        }
    }
    int zeroIndex = getZeroIndex(num);
    int[] newNum = new int[zeroIndex];
    System.arraycopy(num, 0, newNum, 0, zeroIndex);
    return newNum;
}

private static int getZeroIndex(int[] num) {
    for (int i = 0; i < num.length; i++) {
        if (num[i] == 0) {
            return i;
        }
    }
    return -1;
}

private static int getCount(int indexNum, int[] num) {
    int count = 0;
    for (int i = 0; i < num.length; i++) {
        if (indexNum == num[i]) {
            count++;
        }
    }
    return count;
}

 

7.4 分析成绩

public static void main(String[] args) {
    int[] num = createArrays();
    double averagePoint = averagePoint(num);
    System.out.println("分数分别是:" + Arrays.toString(num));
    System.out.println("平均分是:" + averagePoint);
    countResult(num, averagePoint);
}

private static int[] createArrays() {
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入成绩(1~100之间的整数):");
    int[] num = new int[100];
    int i = 0;
    int input;
    while (i >= 0) {
        input = scanner.nextInt();
        if (input >= 0 && input <= 100) {
            num[i] = input;
            i++;
        } else if (input > 100) {
            System.out.print("输入的分数超出最大值!");
            System.exit(1);
        } else {
            break;
        }
    }
    int zeroIndex = getZeroIndex(num);
    int[] newNum = new int[zeroIndex];
    System.arraycopy(num, 0, newNum, 0, zeroIndex);
    return newNum;
}

private static int getZeroIndex(int[] num) {
    for (int i = 0; i < num.length; i++) {
        if (num[i] == 0) {
            return i;
        }
    }
    return -1;
}

private static double averagePoint(int[] num) {
    double averagePoint;
    int length = num.length;
    double totalPoint = 0;
    for (int i = 0; i < num.length; i++) {
        totalPoint = totalPoint + num[i];
    }
    averagePoint = totalPoint / length;
    return averagePoint;
}

private static void countResult(int[] num, double averagePoint) {
    int count1 = 0, count2 = 0;
    for (int i = 0; i < num.length; i++) {
        if ((double) num[i] >= averagePoint) {
            count1++;
        }
        if ((double) num[i] < averagePoint) {
            count2++;
        }
    }
    System.out.println("大于等于平均分的成绩个数为:" + count1);
    System.out.print("小于平均分的成绩个数为:" + count2);
}

 

  • 37
    点赞
  • 197
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
图书详细描述: 本书将Java语言作为大学生的计算机程序设计入门语言,其特色是内容全面、深入浅出、辅助教材立体配套。不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计方法贯穿始终,基础性和实用性并重。本书不仅能使读者掌握Java语言,而且能够让读者对现实世界中较简单的问题及其解决方法用计算机语言进行描述。    本书既可供大专院校用作“Java语言程序设计”课程教材,也可供Java 爱好者作为入门的自学教材。 目录第1 Java语言基础知识 1.1 Java语言与面向对象的程序设计  1.1.1 面向对象的程序设计思想  1.1.2 Java语言的特点  1.1.3 Java类库 1.2 Java程序概述  1.2.1 Java开发环境  1.2.2 Application举例  1.2.3 Applet举例  1.2.4 Servlet举例  1.2.5 JSP和JavaBean举例 1.3 基本数据类型与表达式  1.3.1 变量与常量  1.3.2 基本数据类型  1.3.3 表达式与运算符  1.3.4 类型转换 1.4 数组的概念 1.5 数组的创建和引用  1.5.1 数组的声明  1.5.2 数组的创建  1.5.3 数组元素的初始化  1.5.4 数组的引用  1.5.5 多维数组 1.6 本小结 习题第2 类与对象的基本概念 2.1 面向对象的程序设计方法概述  2.1.1 抽象  2.1.2 封装  2.1.3 继承  2.1.4 多态 2.2 类与对象  2.2.1 类的声明  2.2.2 对象的声明与引用  2.2.3 数据成员  2.2.4 方法成员  2.2.5 类的组织——包的概念  2.2.6 类的访问控制  2.2.7 类成员的访问控制 2.3 对象初始化和回收  2.3.1 构造方法  2.3.2 内存回收技术 2.4 应用举例  2.4.1 声明BankAccount类  2.4.2 声明toString()方法  2.4.3 声明存取款方法  2.4.4 使用DecimalFormat类  2.4.5 声明类方法生成特殊的实例  2.4.6 声明类变量 2.5 UML简介  2.5.1 类图  2.5.2 对象图 2.6 本小结 习题第3 类的方法 3.1 方法的控制流程  3.1.1 if选择结构  3.1.2 switch选择结构  3.1.3 for循环结构  3.1.4 while语句  3.1.5 do while语句  3.1.6 break语句  3.1.7 continue语句 3.2 异常处理简介  3.2.1 异常处理的意义  3.2.2 错误的分类  3.2.3 异常的处理  3.2.4 生成异常对象  3.2.5 声明自己的异常类 3.3 方法的重载 3.4 本小结 习题第4 类的重用第5 接口与多态第6 输入输出流第7 对象群体的组织第8 多线程第9 图形用户界面第10 JDBC与数据库访问第11 Servlet程序设计第12 JSP程序设计参考文献
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值