[英]It is possible to use a Scanner in this manner?
I am programming something, that creates multiple Teacher objects: 我正在编写一些东西,它创建了多个Teacher对象:
public class Teacher {
// 1) Define instance variables
String teacherName;
String catchPhrase;
public static int roomNum;
// 2) Write the constructor method
public Teacher() {
teacherName = "unknown";
catchPhrase = "unknown";
roomNum = 0;
}//end no-arg constructor
public Teacher(String newTeacher, String newCatch, int newRoom) {
teacherName = newTeacher;
catchPhrase = newCatch;
roomNum = newRoom;
}
// 3) Write the proccessing methods (getters and setters)
public void setName(String newName) {
teacherName = newName;
}
public String getName() {
return teacherName;
}
public static int getRoom() {
return roomNum;
}
// 4) Write the out method (eg toString() method)
public String toString() {
String str = "Name: " + teacherName + ". \nCatch phrase: " + catchPhrase + " \nRoom number: " + roomNum + ".";
return str;
}//end toString
public static void main(String args[]) {
}
}
It is executed like this: 它是这样执行的:
Teacher teacherName("First Last", "Catch Phrase", 123);
I have multiple Teacher objects. 我有多个教师对象。 I am trying to make a scanner that checks input from the user to see if the number entered is a room number from one of those objects: 我正在尝试使扫描仪检查用户输入,以查看输入的数字是否是这些对象之一的房间号:
while (input != -1) {
Scanner scan = new Scanner(System.in);
input = scan.nextInt();
if(input == Teacher.getRoom()) {
System.out.println("Yes");
} else if(input != Teacher.getRoom()) {
System.out.println("Nope");
}
}
But I'm not sure how to do it. 但是我不确定该怎么做。 Or if it's possible. 或者,如果有可能。
Any help would be highly appreciated. 任何帮助将不胜感激。
Thank you! 谢谢!
EDIT: 编辑:
I tried a different way. 我尝试了另一种方式。 I tried to use an array with the room numbers, and compare it with the input, but it hasn't worked. 我试图使用带有房间号的数组,并将其与输入进行比较,但是没有用。
int[] rooms = {220, 226, 204, 234, 236, 242, 243, 129, 125, 136, 101, 104, 107, 113, 103, 105, 102, 108, 117, 111, 111, 313, 310, 132, 127, 129, 125,
+ 124, 122, 126, 130, 137, 114, 138, 136, 123, 135, 128, 139, 134, 220, 215, 211, 222, 253, 213, 252, 231, 255, 224, 254,
+ 218, 235, 233, 000, 212, 223, 257, 217, 259, 214, 240, 258, 221, 210, 219, 256, 216, 110, 133, 115, 423, 253, 230, 115, 106, 1062, 418, 415};
if (rooms.equals(input)) {
System.out.println("Yes");
} else {
System.out.println("Nope");
}
That didn't work. 那没用。 Nor did: 也没有:
if (Arrays.asList(rooms).contains(input)) {
System.out.println("Yes");
} else {
System.out.println("Nope");
}
Any help with getting this to work with in integer array, (or a better method) would be appreciated. 任何帮助使它与整数数组(或更好的方法)一起使用的方法,将不胜感激。
Thank you. 谢谢。
EDIT2: EDIT2:
I got it working like this: 我让它像这样工作:
if (rooms.contains(input)){
System.out.println("That teacher is in our database!");
//System.out.println(new int[(rooms).indexOf(1)]);
} else {
System.out.println("Sorry, that teachner was not found in our database!");
}
Thank you very much! 非常感谢你!
easiest way to do that would be to create an array of Teacher
and then inside your while loop, put a for loop that loops through all your Teacher
objects and checks the room number. 最简单的方法是创建一个Teacher
数组,然后在while循环内,放置一个for循环,循环遍历所有Teacher
对象并检查房间号。 or even better, make an array of just room numbers and loop through that. 甚至更好的是,仅排列房间号的数组并循环遍历。
also, you probably want to instantiate the scanner outside the while loop, then do while(scan.hasNextInt()){...
另外,您可能想在while循环之外实例化扫描程序,然后执行while(scan.hasNextInt()){...
so it would be something like 所以就像
Scanner scan = new Scanner(System.in);
Teacher[] teachears...
while (scan.hasNextInt()) {
input = scan.nextInt();
boolean isARoom = false;
for(Teacher teach : teachers){
if(input == teach.getRoom()) {
isARoom = true;
}
}
if(isARoom)
System,out.println("Yes");
else
System,out.println("No");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.