简体   繁体   English

可以通过这种方式使用扫描仪吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM