鱼C论坛

 找回密码
 立即注册
查看: 4770|回复: 12

[已解决]java未交作业查看设计

[复制链接]
发表于 2021-10-8 18:01:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想做一个反馈还有谁没交作业的设计,但是技术上暂时无法实现,麻烦各位帮忙看看
最佳答案
2021-10-10 13:42:39
冒泡排序写错了
import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        int[] arr = new int[49];

        for(int i = 0; i < arr.length; i++){
            arr[i] = i + 1;
        }

        System.out.println("请输入已交作业的同学:");
        while(true)
        {
            int temp = new Scanner(System.in).nextInt();
            if(temp == 0)
            {
                break;
            }
            arr[temp-1] = 0;
        }


        for(int i = 0; i < arr.length - 1; i++){
            for(int j = 0; j < arr.length -1; j++){
                if(arr[j] > arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        System.out.println("当前数组内容:");
        System.out.println(Arrays.toString(arr));

        System.out.println("未提交的同学有:");
        for(int i = 0; i < arr.length; i++){
            if(arr[i] != 0)
            {
                System.out.print(arr[i] + " ");
            }
        }
    }
}
未完工.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-8 18:05:54 | 显示全部楼层
目前的想法是,设置49个元素的int数组,然后用new Scanner(System.in).nextInt输入数字(学号),然后通过"=="判断当前输入的是否为"00"来终止输入,将其余未输入的元素默认输入为0,之后遍历出来(还没有做冒泡排序,到时由低到高遍历出来),方便我知道还有哪些学生还没交。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-8 18:07:27 | 显示全部楼层
但是空有想法没有技术,求各位帮忙看看,如何解决,辛苦各位了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-8 21:36:39 | 显示全部楼层
WarSir 发表于 2021-10-8 18:05
目前的想法是,设置49个元素的int数组,然后用new Scanner(System.in).nextInt输入数字(学号),然后通过" ...

想法很有意思,你的意思是没有输入学号的代表没有教作业吗?
可以说的详细一些吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-9 10:26:44 | 显示全部楼层
巴巴鲁 发表于 2021-10-8 21:36
想法很有意思,你的意思是没有输入学号的代表没有教作业吗?
可以说的详细一些吗

对的,整体思路是:遍历赋值1-49到int[] student中,然后通过nextInt方法输入已交同学的学号(即1-49)进入数组中(因为没有同学们没有交齐,所以需要设置当输入“00”时会停止,不再输入进数组),然后if判断数组中没有被赋值1-49的值,将那些值统一赋值0,然后将数组通过冒泡排序进行遍历输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-9 15:44:06 | 显示全部楼层
WarSir 发表于 2021-10-9 10:26
对的,整体思路是:遍历赋值1-49到int[] student中,然后通过nextInt方法输入已交同学的学号(即1-49)进 ...

不需要啊,java新建数组时,如果没有赋值,里面的值就是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-9 15:45:29 | 显示全部楼层
WarSir 发表于 2021-10-9 10:26
对的,整体思路是:遍历赋值1-49到int[] student中,然后通过nextInt方法输入已交同学的学号(即1-49)进 ...

而且可以遍历判定值在1~49的,如果在,就说明交作业了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-9 16:41:34 | 显示全部楼层
巴巴鲁 发表于 2021-10-9 15:44
不需要啊,java新建数组时,如果没有赋值,里面的值就是0

哦哦,对的对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-9 16:42:13 | 显示全部楼层
巴巴鲁 发表于 2021-10-9 15:45
而且可以遍历判定值在1~49的,如果在,就说明交作业了

现在在尝试直接用for循环来判断和替换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-9 19:31:57 | 显示全部楼层
import java.util.Scanner;

public class demo7 {
    public static void main(String[] args){
        int[] arr = new int[49];

        for(int i = 0; i < arr.length; i++){
            arr[i] = i + 1;
        }

        System.out.println("请输入已交作业的同学:");
        for(int i = 0; i < arr.length; i++){
            int temp = new Scanner(System.in).nextInt();
            for(int j = 0; j < arr.length; j++){
                if(temp == arr[i]){
                    arr[i] = 0;
                }
            }
        }

        int temp = 0;
        for(int i = 0; i < arr.length - 1; i++){
            for(int j = 0; j < arr.length -1; j++){
                if(arr[i] > arr[i+1]){
                    temp = arr[i+1];
                    arr[i+1] = arr[i];
                    arr[i] = temp;
                }
            }
        }

        System.out.println("未提交的同学有:");
        for(int i = 0; i < arr.length; i++){
            System.out.print(arr[i] + " ");
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-9 19:33:04 | 显示全部楼层
现在这个就很神奇,能替换一部分,但不完全替换,而且冒泡排序只能排序第一个,其他的不动……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-10 13:42:39 | 显示全部楼层    本楼为最佳答案   
冒泡排序写错了
import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        int[] arr = new int[49];

        for(int i = 0; i < arr.length; i++){
            arr[i] = i + 1;
        }

        System.out.println("请输入已交作业的同学:");
        while(true)
        {
            int temp = new Scanner(System.in).nextInt();
            if(temp == 0)
            {
                break;
            }
            arr[temp-1] = 0;
        }


        for(int i = 0; i < arr.length - 1; i++){
            for(int j = 0; j < arr.length -1; j++){
                if(arr[j] > arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        System.out.println("当前数组内容:");
        System.out.println(Arrays.toString(arr));

        System.out.println("未提交的同学有:");
        for(int i = 0; i < arr.length; i++){
            if(arr[i] != 0)
            {
                System.out.print(arr[i] + " ");
            }
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-11 15:01:20 | 显示全部楼层
看到了你这个题目,奇思妙想是学习的动力源泉,很棒,我来说书我的看法。
1.根据你的想法有两个关键数据维度 学号 和 是否交作业,所以数据结构适合使用 key/value 形式,不适合使用数组
2.既然定位为一个管理系统,可以扩展一下让它有基础管理的功能

花点时间实现了一个供你参考参考,还可以扩展下功能,你可以尝试下:
1.动态录入学号
2.录入错误的数据还原状态
3.记录数据到硬盘(避免每次重启应用信息就丢了,可以把数据写入到一个文本文件里,每次程序启动读取文件并还原)
public class Demo7 {

    private static final Map<String, Boolean> DATA_MAP = new LinkedHashMap<>();
    private static final Scanner SCANNER = new Scanner(System.in);
    private static final String END_FLAG = "exit";


    public static void main(String[] args) {
        //初始化数据
        init();

        //执行功能
        while (true) {
            //打印菜单
            System.out.println("功能列表:");
            System.out.println("1.初始化数据");
            System.out.println("2.录入已交作业学生");
            System.out.println("3.打印未交作业学生");
            System.out.println("4.退出");
            System.out.print("请选择功能:");
            String next = SCANNER.next();
            //检查输入
            if (!next.matches("\\d")) {
                System.out.println("输入有误,请输入正确的选择~");
                continue;
            }
            //选择功能
            int nextInput = Integer.parseInt(next);
            switch (nextInput) {
                case 1:
                    init();
                    break;
                case 2:
                    inputData();
                    break;
                case 3:
                    printData();
                    break;
                case 4:
                    SCANNER.close();
                    System.exit(0);
                default:
                    System.out.println("功能暂未开发哦,请输入正确的选择~");
            }
        }


    }

    /**
     * 初始化数据
     */
    public static void init() {
        //清空已有数据
        DATA_MAP.clear();
        //初始化学号,根据需要修改,
        //TODO 此处也可以改成输入学号的形式
        for (int i = 1; i < 50; i++) {
            DATA_MAP.put(i + "", false);
        }
    }

    /**
     * 录入数据
     */
    public static void inputData() {

        while (true) {
            System.out.print("请输入:");
            String next = SCANNER.next();
            //exit退出
            if (END_FLAG.equals(next)) {
                break;
            }

            Boolean flag = DATA_MAP.get(next);
            //学号不存在
            if (flag == null) {
                System.out.println("学号 " + next + " 未找到!");
                continue;
            }
            //学号已标记,提示
            if (flag == true) {
                System.out.println("学号 " + next + " 已标记过交了作业哦");
                continue;
            }
            //学号未标记,修改状态
            DATA_MAP.put(next, true);
            System.out.println("学号 " + next + " 成功标记为已交作业");
        }
    }

    /**
     * 打印数据
     */
    public static void printData() {
        if (DATA_MAP.isEmpty()) {
            System.out.println("数据为空!");
        }
        System.out.println("未交作业的学生列表:");
        //循环打印未交作业的学号
        int i = 1;
        for (String sno : DATA_MAP.keySet()) {
            if (!DATA_MAP.get(sno)) {
                System.out.print(sno + "\t");
            }
            //每行显示10个学号 超过换行
            if (i % 10 == 0) {
                System.out.println();
            }
            i++;
        }
        //最后换行
        System.out.println();
    }
}

运行结果如下:

功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:3
未交作业的学生列表:
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        26        27        28        29        30       
31        32        33        34        35        36        37        38        39        40       
41        42        43        44        45        46        47        48        49       
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:2
请输入:1
学号 1 成功标记为已交作业
请输入:2
学号 2 成功标记为已交作业
请输入:1
学号 1 已标记过交了作业哦
请输入:exit
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:3
未交作业的学生列表:
3        4        5        6        7        8        9        10       
11        12        13        14        15        16        17        18        19        20       
21        22        23        24        25        26        27        28        29        30       
31        32        33        34        35        36        37        38        39        40       
41        42        43        44        45        46        47        48        49       
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:aaa
输入有误,请输入正确的选择~
功能列表:
1.初始化数据
2.录入已交作业学生
3.打印未交作业学生
4.退出
请选择功能:4

Process finished with exit code 0

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
WarSir + 5 + 5 + 3 哇,您这思路给我提供了很多帮助啊,只是因.

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表