困扰了一晚上的Scanner,还是不知道在哪里close?

来源:1-9 经验总结

慕丝6263601

2020-07-22 23:13

package com.imooc;

import java.util.Scanner;


public class LibraryTest {

private static String[] books = new String[] {"语文", "数学", "英文", "政治", "历史", "物理", "化学"};


public static void main(String[] args) {

LibraryTest lt = new LibraryTest();

while(lt.searchBook() != 0)  // 进入查找图书系统

System.out.println("图书不存在!");

}

public int searchBook() {

int ret = -1;

System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");

try {

Scanner input = new Scanner(System.in);

int cmd = input.nextInt();

switch (cmd) {

case 1:

ret = searchBookByName();

break;

case 2:

ret = searchBookByIndex();

break;

default:

System.out.println("命令输入错误!请根据提示输入数据命令");

break;

}

} catch(Exception e) {

System.out.println("命令输入错误!请根据提示输入数据命令");

}


return ret;

}

private int searchBookByName() {

System.out.println("输入图书名称:");


Scanner input = new Scanner(System.in);

String name = input.nextLine();

for (String book : books) {

if (book.equals(name)) {

System.out.println("book: " + name);

return 0;

}

}

return -1;

}

private int searchBookByIndex() {

System.out.println("输入图书序号:");


Scanner input = new Scanner(System.in);

int index = input.nextInt();

if (index >= 0 && index < books.length) {

System.out.println("book: " + books[index]);

return 0;

}


return -1;

}

}



写回答 关注

2回答

  • 慕仔0421264
    2020-10-08 19:50:37

    你每次成功执行返回的是0,然后你循环的条件是!=0,所以会退出。

    楼上整理i了

  • 艺术家派大星
    2020-07-23 21:49:23

    我看着头大 帮忙整理一下 希望能够帮助解答者

    package com.imooc;  
    import java.util.Scanner;  
      
    public class LibraryTest {  
      
        private static String[] books = new String[] { "语文", "数学", "英文", "政治",  
                "历史", "物理", "化学" };  
      
        public static void main(String[] args) {  
                LibraryTest lt = new LibraryTest();  
                while (lt.searchBook() != 0)  
                // 进入查找图书系统  
                System.out.println("图书不存在!");  
        }  
      
        public int searchBook() {  
            int ret = -1;  
            System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");  
            try {  
                Scanner input = new Scanner(System.in);  
                int cmd = input.nextInt();  
                switch (cmd) {  
                case 1:  
                    ret = searchBookByName();  
                    break;  
                case 2:  
                    ret = searchBookByIndex();  
                    break;  
                default:  
                    System.out.println("命令输入错误!请根据提示输入数据命令");  
                    break;  
                }  
            } catch (Exception e) {  
                System.out.println("命令输入错误!请根据提示输入数据命令");  
            }  
            return ret;  
        }  
          
        private int searchBookByName() {  
            System.out.println("输入图书名称:");  
            Scanner input = new Scanner(System.in);  
            String name = input.nextLine();  
            for (String book : books) {  
                if (book.equals(name)) {  
                    System.out.println("book: " + name);  
                    return 0;  
                }  
            }  
            return -1;  
        }  
          
        private int searchBookByIndex() {  
            System.out.println("输入图书序号:");  
            Scanner input = new Scanner(System.in);  
            int index = input.nextInt();  
            if (index >= 0 && index < books.length) {  
                System.out.println("book: " + books[index]);  
                return 0;  
            }  
            return -1;  
        }  
          
    }


Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题