[英]web service failing. java.net.SocketTimeoutException: Read timed out - Using Jboss 7.1
[英]Java: Using scanner to read in boolean values failing.
import java.util.Scanner;
public class Cardhelp2{
private static String[] pairArray={"A,A","K,K","Q,Q","J,J","10,10","9,9","8,8","7,7","6,6","5,5","4,4","3,3","2,2"};
public static void generateRandom(int k){
int minimum = 0;
int maximum = 13;
for(int i = 1; i <= k; i++)
{
int randomNum = minimum + (int)(Math.random()* maximum);
System.out.print("Player " + i +" , You have been dealt a pair of: ");
System.out.println(pairArray[randomNum]);
}
} //reads array and randomizes cards
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many players would you like to play with? ");
int m = scan.nextInt();
generateRandom(m);
//displays the cards
___________________________________________________
System.out.println("Would you like to play?");
Scanner scanner = new Scanner(System.in);
if(scanner.next().equalsIgnoreCase("y")||scanner.next().equalsIgnoreCase("yes")) {
System.out.println("This will be fun");
} else if(scanner.next().equalsIgnoreCase("n")||scanner.next().equalsIgnoreCase("no")) {
System.out.println("Maybe next time");
} else {
System.out.println("Invalid character");
}
}
}
我在理解為什么末尾部分無法正常工作時遇到麻煩,有人告訴我我需要更改scanner.next();。 到一個變量,但我不確定如何做到這一點並使代碼正常工作。 是否有一種簡單的方法可以讀取用戶答案,然后向用戶顯示回復?
謝謝
您的條件表達式
if(scanner.next().equalsIgnoreCase("y")||scanner.next().equalsIgnoreCase("yes"))
兩次調用scanner.next()
,這意味着第二個調用將讀取/等待更多輸入。 相反,您只需要調用一次,存儲結果並在比較中使用它:
String tmp = scanner.next();
if(tmp.equalsIgnoreCase("y")||tmp.equalsIgnoreCase("yes"))
假設用戶輸入“是”。
在
if(scanner.next().equalsIgnoreCase("y")||scanner.next().equalsIgnoreCase("yes")) {
Scanner.next()
在第一個測試中產生“是”。 所以代碼很有效
"yes".equalsIgnoreCase("y")
這是錯誤的,因此移至下一個測試:
scanner.next().equalsIgnoreCase("yes")
這是您的問題所在。
輸入的“是”已被第一次測試消耗。 現在,掃描儀緩沖區中沒有任何內容。
如果要再次測試SAME輸入,則必須捕獲它,並在測試中使用它。
所以
String userReply= Scanner.next();
if(userReply.equalsIgnoreCase("y")||userReply.equalsIgnoreCase("yes")) {...
這是becauswe,每個調用scanner.next()
時, Scanner
將返回流中的下一個值,然后移動經過IT
如果用戶輸入的是“是”,然后輸入“否”,則將執行以下測試:
if("yes".equalsIgnoreCase("y")||"no".equalsIgnoreCase("yes")) {...
您需要更改Scanner
的通話方式。
用戶輸入\\n
並且Scanner
似乎沒有跟隨下一個標記。 然后,您需要逐行閱讀。 :
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("How many players would you like to play with? ");
int m = Integer.parseInt(sc.nextLine()); // May thrown NumberFormatException
generateRandom(m);
//displays the cards
System.out.print("Would you like to play? ");
String input = sc.nextLine();
if (input.equalsIgnoreCase("y") || input.equalsIgnoreCase("yes")) {
System.out.println("This will be fun");
} else if (input.equalsIgnoreCase("n") || input.equalsIgnoreCase("no")) {
System.out.println("Maybe next time");
} else {
System.out.println("Invalid character");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.