嗨,我有问题。情况是这样的。有4种选择
- [1]黑色
- [2] 红色
- [3] 蓝色
例如,如果用户选择任何一个数字,代码将打印:
你选择黑色这是我到目前为止的代码
System.out.print("Course: n[1] BSIT n[2] ADGAT n[3] BSCS n[4] BSBA n[5] NITE n enter course:");
course=Integer.parseInt(input.readLine());
问题是,当我调用system.out.print("+课程)时;它打印的是数字而不是单词本身?
如果没有任何类型的数据结构,就无法打印课程。如果你想将数字与某种数据联系起来,你需要自己动手。例如,将名称存储在数组中:
String[] names = {"BSIT","ADGAT","BSCS","NITE"};
然后用相应的查找引用您的数组:
//...
int course = Integer.parseInt(input.readLine());
System.out.println("You chose: " + names[course-1]);
请记住,使用数组时,索引从零开始,因此我们减少一。
你在那里做什么:1.你打印出一个句子。2.你让用户输入一个句子,你希望它包含一个数字,并将其转换为数字。
程序本身并不知道你给用户的第一句话实际上是他应该从中选择的不同内容。
你需要做的是将数字转换回它实际代表的东西。
最简单的方法是
String word;
switch(course) {
case 1: word = "BSIT"
break;
case 2: word = "ADGAT";
break;
case 3: word = "BSCS";
break;
case 4: word = "BSBA";
break;
case 5: word = "NITE";
break;
default:
throw new IllegalArgumentException("The choice '" + course + "' is not a valid one. Only 1-5 would be legal);
}
System.out.println("The course you've chosen is: " + word);
这是最直接的方法,但实际上不是我最喜欢的,因为它复制了绘制地图的地方。我更愿意告诉程序这些东西是什么,比如:
private enum Courses {
BSIT(1), ADGAT(2), BSCS(3), BSBA(4), NITE(5);
private int userChoice;
private Courses(int theUserChoice) {
userChoice = theUserChoice;
}
public int getUserChoice() {
return userChoice;
}
public static fromUserChoice(int aChoice) {
for (Courses course: Courses.values() {
if (course.userChoice == aChoice) {
return course;
}
throw new IllegalArgumentException("The choice '" + course + "' is not a valid one. Only 1-5 would be legal);
}
}
}
private static String printCourseList() {
System.out.print("Courses: ");
for (Courses course: Courses.values()) {
System.out.print("[" + course.getUserChoice() + "] " + course.name() + " ");
}
System.out.println();
}
public static main(String[] args) {
printCourseList();
Courses course = Courses.fromUserChoice(Integer.valueOf(System.console().readLine()));
System.out.println("You're selected course is: " + course.name());
}
我更喜欢这样,因为现在这个项目实际上知道有一种特殊的东西叫做"课程"。它知道它与一个数字有关,有些数字实际上可能反映了对课程的选择。它是在一个中心位置完成的(课程的定义)。
希望这不是太多的信息,你会觉得这很有帮助。
使用此
switch(course)
{
case 1:
System.out.println("black");
break;
case 2:
System.out.println("red");
break;
case 3:
System.out.println("blue");
break;
default:
System.out.println("invalide number"); // this will execute if course var does not equale to 1 , 2 or 3
break;
}