gpt4 book ai didi

java - 如果要比较的两个值具有相同的值,如何打印存储在树形图中的值?

转载 作者:行者123 更新时间:2023-12-01 12:56:52 25 4
gpt4 key购买 nike

如果我输入以下内容:

student #1
id number: 1
name: aaa
course: cs

student#2
id number: 1
name: aaa
course: cs

树形图应该提示按 ID 号排序。
然后,它应该像这样打印:

student   id number   course
aaa 1 cs
aaa 1 cs

但就我而言,它看起来像这样:

student   id number   course
aaa 1 cs

这是我的代码:

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

public class studentreport {
static Scanner j = new Scanner(System.in);
static Scanner a = new Scanner(System.in);

public static void main(String[] args) {

List<String> studentnumberA = new ArrayList<String>();
List<String> studentnameA = new ArrayList<String>();
List<String> courseA = new ArrayList<String>();
List<Double> prelimA = new ArrayList<Double>();
List<Double> midtermA = new ArrayList<Double>();
List<Double> finalsA = new ArrayList<Double>();
List<Double> sumA = new ArrayList<Double>();

double prelim, midterm, finals;
String menu, menu2;
String transaction = null, transaction2 = null, transaction3 = null;
String studentname = null, course = null, studentnumber = null;

do {
System.out.print("\t\t\tDi Natuto University \n\t\t\t " +
"Pililla,Rizal \n\n\t\t\t" +
"Main Menu \n\t\tSM\tStudent Maintenance" +
"\n\t\tSR\tStudent Report \n\t\tSGR\t" +
"Student Grade Report \n\t\tX\tExit \n\n\t\tProcess? ");
menu = j.nextLine();
if (menu.equals("x") || menu.equals("X")) {
System.exit(0);
}
if (menu.equals("SM") || menu.equals("sm")) {
do {
System.out.print("Student Number: ");
studentnumber = j.nextLine();
studentnumberA.add(studentnumber);

System.out.print("Student Name: ");
studentname = j.nextLine();
studentnameA.add(studentname);

System.out.print("Course : ");
course = j.nextLine();
courseA.add(course);

System.out.print("Prelim Grade: ");
prelim = j.nextDouble();
prelimA.add(prelim);

System.out.print("Midterm Grade: ");
midterm = j.nextDouble();
midtermA.add(midterm);

System.out.print("Finals Grade: ");
finals = j.nextDouble();
finalsA.add(finals);
j.nextLine();

System.out.println("Continue? (Y/N): ");
transaction = a.nextLine();

} while (transaction.equalsIgnoreCase("Y"));
}

if (menu.equalsIgnoreCase("sr")) {
do {
System.out
.println("\t\t\tDi Natuto University \n\t\t\t" +
"Pililla,Rizal \n\n\t\t\tStudent Summary Report" +
"\n\n\t\t\tSNo\tStudent no." +
"\n\t\t\tSna\tStudent Name \n\t\t\tCo\tCourse" +
"\n\t\t\tX\tExit \n\n\t\tProcess? ");
menu2 = j.nextLine();
System.out.println("\n");
if (menu2.equalsIgnoreCase("X")) {
System.exit(0);
}

if (menu2.equalsIgnoreCase("sno")) {

String[] array = studentnumberA
.toArray(new String[studentnumberA.size()]);
String[] array2 = studentnameA
.toArray(new String[studentnameA.size()]);
String[] array3 = courseA.toArray(new String[courseA
.size()]);
String[][] storeAllArray = { array, array2, array3 };
TreeMap<String, String> map = new TreeMap<String, String>();
TreeMap<String, String> map2 = new TreeMap<String, String>();

System.out
.println("\t\t\t\tDi Natuto University \n\t\t\t\t" +
"Pililla,Rizal \n\n\t\t\t\t" +
"Student Summary Report \n\n\t\t\tStudent no."
+ "Student Name\t\tCourse ");
for (int i = 0; i < array.length; i++) {
map2.put(array[i], array3[i]);
map.put(array[i], array2[i]);

}
for (String key : map.keySet())
System.out.println("\t\t\t" + key + "\t\t "
+ map.get(key) + "\t\t\t" + map2.get(key));
System.out.println("\n");
}
if (menu2.equalsIgnoreCase("sna")) {
String[] array = studentnumberA
.toArray(new String[studentnumberA.size()]);
String[] array2 = studentnameA
.toArray(new String[studentnameA.size()]);
String[] array3 = courseA.toArray(new String[courseA
.size()]);
String[][][] storeAllArray = { { array }, { array2 },
{ array3 } };
TreeMap<String, String> map = new TreeMap<String, String>();
TreeMap<String, String> map2 = new TreeMap<String, String>();

System.out
.println("\t\t\t\tDi Natuto University \n\t\t\t\t" +
"Pililla,Rizal \n\n\t\t\t\t" +
"Student Summary Report \n\n\t\t\tStudent no."
+ " Student Name" + "\tCourse ");
for (int i = 0; i < array.length; i++) {
map2.put(array2[i], array3[i]);
map.put(array2[i], array[i]);

}
for (String key : map.keySet())
System.out.println("\t\t\t" + map.get(key)
+ "\t\t " + key + "\t\t" + map2.get(key));
System.out.println("\n");
}
if (menu2.equalsIgnoreCase("co")) {
String[] array = studentnumberA
.toArray(new String[studentnumberA.size()]);
String[] array2 = studentnameA
.toArray(new String[studentnameA.size()]);
String[] array3 = courseA.toArray(new String[courseA
.size()]);
TreeMap<String, String> map = new TreeMap<String, String>();
TreeMap<String, String> map2 = new TreeMap<String, String>();

System.out
.println("\t\t\t\tDi Natuto University \n\t\t\t\t" +
"Pililla,Rizal \n\n\t\t\t\t" +
"Student Summary Report \n\n\t\t\tStudent no."
+ " Student Name" + "\tCourse ");
for (int i = 0; i < array.length; i++) {
map2.put(array3[i], array2[i]);
map.put(array3[i], array[i]);

}
for (String key : map.keySet())
System.out.println("\t\t\t" + map.get(key)
+ "\t\t " + map2.get(key) + "\t\t" + key);
System.out.println("\n");

}

System.out.print("Continue? (Y/N)");
transaction2 = j.nextLine();
} while (transaction2.equalsIgnoreCase("Y"));
}
if (menu.equalsIgnoreCase("sgr")) {

String[] array = studentnumberA
.toArray(new String[studentnumberA.size()]);
String[] array2 = studentnameA.toArray(new String[studentnameA
.size()]);
String[] array3 = courseA.toArray(new String[courseA.size()]);
Double[] array4 = prelimA.toArray(new Double[prelimA.size()]);
Double[] array5 = midtermA.toArray(new Double[midtermA.size()]);
Double[] array6 = finalsA.toArray(new Double[finalsA.size()]);
Double[] array7 = sumA.toArray(new Double[sumA.size()]);
String[][] storeAllArray = { array, array2, array3 };
TreeMap<Double, String> map = new TreeMap<Double, String>();
TreeMap<Double, String> map2 = new TreeMap<Double, String>();
TreeMap<Double, String> map3 = new TreeMap<Double, String>();

System.out
.println("\t\t\t\tDi Natuto University \n\t\t\t\t" +
"Pililla,Rizal \n\n\t\t\t\t" +
"Student Grade Report \n\n\t\t\tStudent no."
+ " Student Name"
+ "\tCourse"
+ "\t\t\tAverage");

for (int i = 0; i < array.length; i++) {
double sum = (array4[i] + array5[i] + array6[i]) / 3;
sumA.add(sum);
map.put(array7[i], array[i]);
map2.put(array7[i], array2[i]);
map3.put(array7[i], array3[i]);

}
for (Double key : map.keySet())
System.out.println("\t\t\t" + map.get(key) + "\t\t "
+ map2.get(key) + "\t\t" + map2.get(key) + "\t\t"
+ key);

System.out
.print("\n\n\t\t\tM\t\tMain Menu\n\t\t\tX\t\tExit\nChoice: ");
transaction3 = j.nextLine();

if (transaction3.equalsIgnoreCase("X")) {
System.out
.print("\t\t\t\tDi Natuto University \n\t\t\t\t" +
"Pililla,Rizal \n\n\t\t\t\t" +
"Thank you for using Di Natuto Grading System...");
System.exit(0);
}
}
} while (transaction.equalsIgnoreCase("N")
|| transaction2.equalsIgnoreCase("N")
|| transaction3.equalsIgnoreCase("M"));
}
}

最佳答案

从我的观察和测试来看,这个问题似乎不存在。您遇到此问题是因为您尝试打印重复的条目。使用相同的键,TreeMap 假定不再需要打印它。

因为您尝试在 TreeMap 中存储两个相同的键,所以它不会按照您希望的方式工作。

修复建议:您可以尝试切换存储键和值的顺序。您可以存储它们,以便学生姓名是键,学生编号是值(或任何其他可以避免重复键的不同组合)。

代码建议:我注意到您的代码很长,有几行可以缩短。

对于一个:

        studentnumber=j.nextLine();
studentnumberA.add(studentnumber);

这可以缩短为简单的studentnumberA.add(j.nextLine());

以及菜单代码中的所有其他变量。

如果您仍然不明白问题所在,请随时询问。我和其他许多人一样很乐意为您提供帮助。

关于java - 如果要比较的两个值具有相同的值,如何打印存储在树形图中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com