鱼C论坛

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

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

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

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

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

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

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

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

  9.         System.out.println("请输入已交作业的同学:");
  10.         while(true)
  11.         {
  12.             int temp = new Scanner(System.in).nextInt();
  13.             if(temp == 0)
  14.             {
  15.                 break;
  16.             }
  17.             arr[temp-1] = 0;
  18.         }


  19.         for(int i = 0; i < arr.length - 1; i++){
  20.             for(int j = 0; j < arr.length -1; j++){
  21.                 if(arr[j] > arr[j+1]){
  22.                     int temp = arr[j+1];
  23.                     arr[j+1] = arr[j];
  24.                     arr[j] = temp;
  25.                 }
  26.             }
  27.         }

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

  30.         System.out.println("未提交的同学有:");
  31.         for(int i = 0; i < arr.length; i++){
  32.             if(arr[i] != 0)
  33.             {
  34.                 System.out.print(arr[i] + " ");
  35.             }
  36.         }
  37.     }
  38. }
复制代码
未完工.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 | 显示全部楼层
  1. import java.util.Scanner;

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

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

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

  17.         int temp = 0;
  18.         for(int i = 0; i < arr.length - 1; i++){
  19.             for(int j = 0; j < arr.length -1; j++){
  20.                 if(arr[i] > arr[i+1]){
  21.                     temp = arr[i+1];
  22.                     arr[i+1] = arr[i];
  23.                     arr[i] = temp;
  24.                 }
  25.             }
  26.         }

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

使用道具 举报

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

使用道具 举报

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

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

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

  9.         System.out.println("请输入已交作业的同学:");
  10.         while(true)
  11.         {
  12.             int temp = new Scanner(System.in).nextInt();
  13.             if(temp == 0)
  14.             {
  15.                 break;
  16.             }
  17.             arr[temp-1] = 0;
  18.         }


  19.         for(int i = 0; i < arr.length - 1; i++){
  20.             for(int j = 0; j < arr.length -1; j++){
  21.                 if(arr[j] > arr[j+1]){
  22.                     int temp = arr[j+1];
  23.                     arr[j+1] = arr[j];
  24.                     arr[j] = temp;
  25.                 }
  26.             }
  27.         }

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

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

使用道具 举报

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

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

  1. public class Demo7 {

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


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

  8.         //执行功能
  9.         while (true) {
  10.             //打印菜单
  11.             System.out.println("功能列表:");
  12.             System.out.println("1.初始化数据");
  13.             System.out.println("2.录入已交作业学生");
  14.             System.out.println("3.打印未交作业学生");
  15.             System.out.println("4.退出");
  16.             System.out.print("请选择功能:");
  17.             String next = SCANNER.next();
  18.             //检查输入
  19.             if (!next.matches("\\d")) {
  20.                 System.out.println("输入有误,请输入正确的选择~");
  21.                 continue;
  22.             }
  23.             //选择功能
  24.             int nextInput = Integer.parseInt(next);
  25.             switch (nextInput) {
  26.                 case 1:
  27.                     init();
  28.                     break;
  29.                 case 2:
  30.                     inputData();
  31.                     break;
  32.                 case 3:
  33.                     printData();
  34.                     break;
  35.                 case 4:
  36.                     SCANNER.close();
  37.                     System.exit(0);
  38.                 default:
  39.                     System.out.println("功能暂未开发哦,请输入正确的选择~");
  40.             }
  41.         }


  42.     }

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

  55.     /**
  56.      * 录入数据
  57.      */
  58.     public static void inputData() {

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

  66.             Boolean flag = DATA_MAP.get(next);
  67.             //学号不存在
  68.             if (flag == null) {
  69.                 System.out.println("学号 " + next + " 未找到!");
  70.                 continue;
  71.             }
  72.             //学号已标记,提示
  73.             if (flag == true) {
  74.                 System.out.println("学号 " + next + " 已标记过交了作业哦");
  75.                 continue;
  76.             }
  77.             //学号未标记,修改状态
  78.             DATA_MAP.put(next, true);
  79.             System.out.println("学号 " + next + " 成功标记为已交作业");
  80.         }
  81.     }

  82.     /**
  83.      * 打印数据
  84.      */
  85.     public static void printData() {
  86.         if (DATA_MAP.isEmpty()) {
  87.             System.out.println("数据为空!");
  88.         }
  89.         System.out.println("未交作业的学生列表:");
  90.         //循环打印未交作业的学号
  91.         int i = 1;
  92.         for (String sno : DATA_MAP.keySet()) {
  93.             if (!DATA_MAP.get(sno)) {
  94.                 System.out.print(sno + "\t");
  95.             }
  96.             //每行显示10个学号 超过换行
  97.             if (i % 10 == 0) {
  98.                 System.out.println();
  99.             }
  100.             i++;
  101.         }
  102.         //最后换行
  103.         System.out.println();
  104.     }
  105. }
复制代码


运行结果如下:

功能列表:
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-4-28 04:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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