java未交作业查看设计
想做一个反馈还有谁没交作业的设计,但是技术上暂时无法实现,麻烦各位帮忙看看 目前的想法是,设置49个元素的int数组,然后用new Scanner(System.in).nextInt输入数字(学号),然后通过"=="判断当前输入的是否为"00"来终止输入,将其余未输入的元素默认输入为0,之后遍历出来(还没有做冒泡排序,到时由低到高遍历出来),方便我知道还有哪些学生还没交。 但是空有想法没有技术,求各位帮忙看看,如何解决,辛苦各位了 WarSir 发表于 2021-10-8 18:05目前的想法是,设置49个元素的int数组,然后用new Scanner(System.in).nextInt输入数字(学号),然后通过" ...
想法很有意思,你的意思是没有输入学号的代表没有教作业吗?
可以说的详细一些吗 巴巴鲁 发表于 2021-10-8 21:36
想法很有意思,你的意思是没有输入学号的代表没有教作业吗?
可以说的详细一些吗
对的,整体思路是:遍历赋值1-49到int[] student中,然后通过nextInt方法输入已交同学的学号(即1-49)进入数组中(因为没有同学们没有交齐,所以需要设置当输入“00”时会停止,不再输入进数组),然后if判断数组中没有被赋值1-49的值,将那些值统一赋值0,然后将数组通过冒泡排序进行遍历输出。 WarSir 发表于 2021-10-9 10:26
对的,整体思路是:遍历赋值1-49到int[] student中,然后通过nextInt方法输入已交同学的学号(即1-49)进 ...
不需要啊,java新建数组时,如果没有赋值,里面的值就是0 WarSir 发表于 2021-10-9 10:26
对的,整体思路是:遍历赋值1-49到int[] student中,然后通过nextInt方法输入已交同学的学号(即1-49)进 ...
而且可以遍历判定值在1~49的,如果在,就说明交作业了 巴巴鲁 发表于 2021-10-9 15:44
不需要啊,java新建数组时,如果没有赋值,里面的值就是0
哦哦,对的对的 巴巴鲁 发表于 2021-10-9 15:45
而且可以遍历判定值在1~49的,如果在,就说明交作业了
现在在尝试直接用for循环来判断和替换
import java.util.Scanner;
public class demo7 {
public static void main(String[] args){
int[] arr = new int;
for(int i = 0; i < arr.length; i++){
arr = 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){
arr = 0;
}
}
}
int temp = 0;
for(int i = 0; i < arr.length - 1; i++){
for(int j = 0; j < arr.length -1; j++){
if(arr > arr){
temp = arr;
arr = arr;
arr = temp;
}
}
}
System.out.println("未提交的同学有:");
for(int i = 0; i < arr.length; i++){
System.out.print(arr + " ");
}
}
}
现在这个就很神奇,能替换一部分,但不完全替换,而且冒泡排序只能排序第一个,其他的不动…… 冒泡排序写错了
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
int[] arr = new int;
for(int i = 0; i < arr.length; i++){
arr = i + 1;
}
System.out.println("请输入已交作业的同学:");
while(true)
{
int temp = new Scanner(System.in).nextInt();
if(temp == 0)
{
break;
}
arr = 0;
}
for(int i = 0; i < arr.length - 1; i++){
for(int j = 0; j < arr.length -1; j++){
if(arr > arr){
int temp = arr;
arr = arr;
arr = temp;
}
}
}
System.out.println("当前数组内容:");
System.out.println(Arrays.toString(arr));
System.out.println("未提交的同学有:");
for(int i = 0; i < arr.length; i++){
if(arr != 0)
{
System.out.print(arr + " ");
}
}
}
} 看到了你这个题目,奇思妙想是学习的动力源泉,很棒,我来说书我的看法。
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]