我有一个类Player,它包含一个以整数作为参数的函数。在我的main函数中,它在另一个名为Game的类中,我有一个接受用户输入的部分,并将它传递给Player类的DoMove(int i)函数。 在我的游戏课上,我有这个:
public static void main(String[] args)
{
Player p1 = new Player();
Scanner input = new Scanner(System.in);
int entry;
while(GameNotOver() == true)
{
do{
try
{
p1.DoMove(entry);
} catch (InputMismatchException e)
{
System.out.println("Bad choice!");
input.next();
}
} while (p1.DoMove(entry) == false);
}
}
本质上,main函数是将一个参数传递给另一个类函数,它可以正常工作。但该参数应该是一个整数。如果我输入一堆字符然后按回车键,我就明白了:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
主GameNotOver循环运行正常,如果省略所有异常处理,整个程序将完美运行。 程序退出。我想我没有正确捕捉异常。有什么提示吗?
答案 0 :(得分:0)
你应该发布你的DoMove方法,因为这段代码不能抛出你所面临的错误。此外,您不应该在catch块中调用from splinter import Browser
from splinter.driver.webdriver.chrome import WebDriver as ChromeWebDriver
_DRIVERS = {
'chrome': ChromeWebDriver,
}
browser = Browser('chrome')
url = 'http://127.0.0.1:4444/'
browser.visit(url)
browser.find_by_id('username').fill('eee@eeee.com')
browser.find_by_id('password').fill('eeeexxxx')
browser.find_by_id('sub_btn').click()
browser.find_by_xpath('//*[@id="sign_out_button"]').click()
,因为它没有意义。如果输入中有错误,显然你不想尝试读取它,因为它是一个无效的条目。
答案 1 :(得分:0)
您的异常将从以下引发:
p1.DoMove(entry)
然后在处理异常后立即执行完全相同的操作:
} while (p1.DoMove(entry) == false)
DoMove(条目)在使用相同的输入再次调用时是否会采取不同的行为?