N

Norlcayn的博客

A text-focused Halo theme

  • 首页
  • 文章
  • 默认分类
  • 关于
主页 Java测试题
文章

Java测试题

发表于 2024-06-29 更新于 昨天
作者 Administrator
34~44 分钟 阅读
  1. 借助随机函数生成100以内的整数表示成绩,将得到的10名同学3门课的成绩存储在一个二维数组中。分别统计每个人的平均成绩,每门课的平均成绩,并分别显示。
import java.util.Random;

public class Test {
    public static void main(String[] args) {
        int[][] score =new int[10][3];
        Random r = new Random();
        for (int i = 0; i < score.length; i++) {
            for (int j = 0; j < score[i].length; j++) {
                score[i][j] = r.nextInt(100);
            }
        }

        // 显示成绩
        for (int i = 0; i < score.length; i++) {
            for (int j = 0; j < score[i].length; j++) {
                System.out.print(score[i][j] + " ");
            }
            System.out.println("");
        }

        System.out.println("----------------------------");
        // 求每个人的平均成绩
        int[] personal_avg_score = new int[10];
        for (int i = 0; i < score.length; i++) {
            int sum = 0;
            for (int j = 0; j < score[i].length; j++) {
                sum += score[i][j];
            }
            personal_avg_score[i] = sum / score[i].length;
        }

        for (int i = 0; i < personal_avg_score.length; i++) {
            System.out.println("个人的平均成绩:" + personal_avg_score[i]);
        }

        // 求每科的平均成绩
        int[] subject_avg_score = new int[3];
        for (int i = 0; i < score[i].length; i++) {
            int sum = 0;
            for (int j = 0; j < score.length; j++) {
                sum += score[j][i];
            }
            subject_avg_score[i] = sum / score.length;
        }

        for (int i = 0; i < subject_avg_score.length; i++) {
            System.out.println("科目:" + subject_avg_score[i]);
        }
    }
}
  1. 编写程序统计用户从键盘输入的任意一个字符串中数字字符出现的总数。
import java.util.Scanner;
public class CountCharacter {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String str = sc.next();

        int count_num = 0;
        int count_letter = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (Character.isDigit(ch)) {
                count_num++;
            } else if(Character.isLetter(ch)) {
                count_letter++;
            }
        }

        System.out.println("数字的个数:" + count_num);
        System.out.println("字符的个数:" + count_letter);
        System.out.println("其他的个数:" + (str.length() - (count_num + count_letter)));
    }
}
  1. 编程实现:获取某个给定的整型数组中最小的能整除5的数。
import java.util.Arrays;
import java.util.Random;

public class findMinNum {
    public static void main(String[] args) {
        Random r = new Random();
        int[] arr = new int[50];
        for (int i = 0; i < arr.length; i++) {
            int temp = r.nextInt(100) + 1;
            if (temp % 5 == 0) {
                arr[i] = temp;
            } else {
                arr[i] = 999;
            }
        }
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        if (arr[0] == 999) {
            System.out.println("数组中没有能被5整除的数字");
        } else {
            System.out.println("数组中最小能被5整除的数字是:" + arr[0]);
        }
    }
}
  1. 编程实现:判断用户从键盘输入的任意字符串,在忽略了非数字和字母符号后,

是否为回文串。例如:用户输入的字符串是“123ab-&*;2332@b#a3%21”,忽略非数

字字母符号后的串为“123ab2332ba321”,这是一个回文串(正向和逆向的序列相

同)。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Palindromic_String {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String str = sc.next();
        sc.close();

        List<String> checkInput = new ArrayList();
        for (int i = 0; i < str.length(); i++) {
            if (Character.isLetter(str.charAt(i)) || Character.isDigit(str.charAt(i))) {
                checkInput.add(Character.toString(str.charAt(i)));
            }
        }

        List<String> checkReverse= new ArrayList();
        for (int i = 0; i < checkInput.size(); i++) {
            checkReverse.add(checkInput.get(checkInput.size() - i - 1));
        }

        if (checkReverse.equals(checkInput)) {
            System.out.println("是回文串");
        } else {
            System.out.println("不是回文串");
        }
    }
}
  1. 从给定的二进制文件test.dat中读取50个整数,过滤3和5的倍数,将剩余元素送到

屏幕上显示。

import java.io.*;

public class FileDataFilter {
    public static void readDigs(File fd, int[] digs) throws IOException {
        DataInputStream din = new DataInputStream(new BufferedInputStream(new FileInputStream(fd)));
        for (int i = 0; i < digs.length; i++) {
            digs[i] = din.readInt();
            din.close();
        }
    }

    public static void printDigs(int[] digs) {
        for (int i = 0; i < digs.length; i++) {
            if (digs[i] % 3 == 0) {
                continue;
            }
            if (digs[i] % 5 == 0) {
                continue;
            }
            System.out.print(digs[i]);
        }
        System.out.println();
    }

    public static void main(String[] args) throws IOException{
        File fd = new File("test.dat");
        int[] digs = new int[0];
        FileDataFilter.readDigs(fd,digs);
        FileDataFilter.printDigs(digs);
    }
}
  1. 编写一个Java程序,求出整数1~100内的所有素数,并在屏幕上显示这些数,每5

个一行。同时算出这些素数的累加和,并独立一行显示到屏幕上。

public class PrimeNumber {
    public static void main(String[] args) {
        int sum = 0;
        int changeLine = 0;
        for (int i = 2; i < 100; i++) {
            if (isPrime(i)) {
                sum += i;
                System.out.print(i + " ");
                changeLine++;
                if (changeLine == 5) {
                    System.out.println("");
                    changeLine=0;
                }
            }
        }
        System.out.println(sum);
    }
    public static boolean isPrime(int x) {
        for (int i = 2; i < x; i++) {
            if (x % i == 0) {
                return false;
            }
        }
        return true;
    }
}
  1. 编程实现:随机生成100个不大于100的正整数,去除重复值后,按一行5个将不重

复的数输出到屏幕上,并显示不重复数一共有多少个。

import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.function.Consumer;

public class RandomNumber {
    public static void main(String[] args) {
        Random r = new Random();
        Set s = new HashSet();
        for (int i = 0; i < 101; i++) {
            s.add(r.nextInt(100) + 1);
        }

        s.forEach(new Consumer() {
            int index = 0;
            @Override
            public void accept(Object o) {
                index++;
                System.out.print(o + " ");
                if (index == 5) {
                    System.out.println();
                    index = 0;
                }
            }
        });

        System.out.println();
        System.out.println("不重复数的个数为:" + s.size());
    }
}
  1. 列出当前文件夹及其子文件夹下所有文件的文件名(文件夹的名字无需列出)。
import java.io.File;

public class ShowFileName {
    public static void listAll(File fd) {
        File[] FList = fd.listFiles();
        for (int i = 0; i < FList.length; i++) {
            if (FList[i].isFile()) {
                System.out.println(FList[i].getName());
            } else {
                listAll(FList[i]);
            }
        }
    }

    public static void main(String[] args) {
        File fd = new File(".");
        listAll(fd);
    }
}
  1. 编写一个矩形类,包含:

长和宽两个属性;

依据指定的长和宽构建矩形;

不指定长和宽时,默认两者为1.0;

能求矩形的面积;

能求矩形的周长;

能显示矩形的长和宽的基本信息,

class RectangleClass {
    private double width;
    private double height;

    // 默认值
    public RectangleClass() {
        this.width = this.height = 1.0;
    }

    // 初始化值
    public RectangleClass(int width, int height) {
        this.width = width;
        this.height = height;
    }

    // 获取面积
    public double getArea() {
        return this.height * this.width;
    }

    // 获取周长
    public double getLength() {
        return (this.height * 2) + (this.width * 2);
    }

    // 获取、设置长宽
    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
}
  1. 编程实现:从键盘输入若干个正整数,输入为负数时表示输入结束。求输入的若

干元素中的最大值,以及它们的累加和、乘积,并将结果送到屏幕显示。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

class ScannerTest {
    public static void main(String[] args) {
        // 输入数据且判断退出时机
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        while (true) {
            System.out.println("请输入整数:");
            String s = sc.next();
            if (Integer.parseInt(s) >= 0) {
                list.add(Integer.parseInt(s));
            } else if (Integer.parseInt(s) < 0) {
                break;
            }
        }

        // 将输入数据转换为数组
        int[] arr = new int[list.size()];
        int sum = 0;
        int cj = 1;
        for (int i = 0; i < list.size(); i++) {
            arr[i] = list.get(i);
            // 计算累加和以及乘积
            sum += list.get(i);
            cj *= list.get(i);
        }

        // 排序得到最大值
        Arrays.sort(arr);
        System.out.println("最大值:");
        System.out.println(arr[arr.length - 1]);
        System.out.println("累加和:");
        System.out.println(sum);

        System.out.println("乘积:");
        System.out.println(cj);
    }
}

11.\ 随机生成50个不大于1000的正整数,将大于等于平均值的那些正整数按个位数的

升序排列,并将它们以5个一行,空格间隔的形式输出到屏幕。

import java.util.*;

class RandomSort {
    public static void main(String[] args) {
        Random r = new Random();
        int[] arr = new int[50];

        // 生成随机数
        int avgNum = 0;
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            arr[i] = r.nextInt(1001);
            sum += arr[i];
        }

        // 计算平均值
        avgNum = sum / arr.length;
        System.out.println(avgNum);

        // 过滤出高于平均值的数
        int arrLength = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= avgNum) {
                arrLength++;
            }
        }

        // 将高于平均值的数重新组成一个数组
        int[] avgArr = new int[arrLength];
        int index = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= avgNum) {
                avgArr[index] = arr[i];
                index++;
            }
        }

        System.out.println("平均值:" + avgNum);
        System.out.println(Arrays.toString(avgArr));

        // 冒泡排序,对个位数进行升序排序
        for (int i = 0; i < avgArr.length - 1; i++) {
            for (int j = 0; j < avgArr.length - 1; j++) {
                if (avgArr[j] % 10 > avgArr[j + 1] % 10) {
                    int tmp = avgArr[j];
                    avgArr[j] = avgArr[j + 1];
                    avgArr[j + 1] = tmp;
                }
            }
        }

        // 输出格式化
        int changeLine = 0;
        for (int i = 0; i < avgArr.length; i++) {
            changeLine++;
            System.out.print(avgArr[i] + " ");
            if (changeLine == 5) {
                System.out.println();
                changeLine = 0;
            }
        }
    }
}
  1. 编程实现:定义通信簿中的一个联系方式,内容包括:

身份证,姓名和电话三个属性;

能够依据给定的身份证、姓名和电话生成一个联系项(构造函数);

能修改联系电话;

能依据身份证号查找某个联系项是否与当前项相同(equals方法);

能够显示详细的联系项信息。

import java.util.Objects;

class AddressList {
    private String id;
    private String name;
    private int phone;

    // 构造函数生成练习簿
    public AddressList(String id, String name, int phone) {
        this.id = id;
        this.name = name;
        this.phone = phone;
    }

    // 修改号码
    public void setPhone(int phone) {
        this.phone = phone;
    }

    // 比较身份证的值(这地方存疑,答案上是这么写的)
    public boolean equals(AddressList a) {
        return a.id.equals(this.id);
    }

    // 输出详细信息
    @Override
    public String toString() {
        return "AddressList{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", phone=" + phone +
                '}';
    }
}

测试类:

public class AddressListTest {
    public static void main(String[] args) {
        AddressList adL1 = new AddressList("1234567890x","zhangsan",1333333333);
        AddressList adL2 = new AddressList("1234567890","zhangsan",1333333333);

        System.out.println(adL1.equals(adL2));
        adL1.setPhone(1344444444);
        System.out.println(adL1.toString());
    }
}
Java
自学系列
许可协议:  CC BY 4.0
分享

相关文章

1月 15, 2026

Java异常处理

异常的介绍和体系结构 异常介绍 指的是程序在编译或执行过程中,出现的非正常的情况(错误) ArrayIndexOutOfBoundsException:索引越界异常 ClassCaseException:类型转换异常 NullPointerException:空指针异常 注意:语法错误,不是异常 异

1月 15, 2026

Java网络编程

网络编程概念 可以让设备中的程序与网络上其他设备中的程序进行数据交互的技术(实现网络通信) 基本的通信架构分为两种:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端) 无论是CS架构还是BS架构,都必须依赖网络编程 Java中提供了java.ne

1月 15, 2026

Java面向对象编程

面向对象介绍 面向对象:并不是一个技术,而是一种编程的指导思想 以什么形式组织代码,以什么思路解决问题 为什么要学习面向对象? 因为生活中,我们要解决问题时,就是采用这种指导思想去解决的 所以,我们写程序去解决问题时,如果也能采用这种指导思想 就会使编程变得非常简单,程序也便于理解 面向对象,重点学

下一篇

ubuntu基本使用

上一篇

ESP32-SSCMA

最近更新

  • Hello Halo
  • 状态机
  • 数据表设计规范
  • 缓存优化
  • 事务失效

热门标签

Halo 异常处理 Redisson 并行 Vue 并发 递归 请求限流 SpringAMQP 类加载器

目录

©2026 Norlcayn的博客. 保留部分权利。

使用 Halo 主题 Chirpy