2017-12-03 145 views
1

我正在研究一个程序,它会询问用户一个整数,然后另一个,并把它们作为图点。它会告诉他们之间的距离。用户必须输入一个整数或按“Q”退出。如果是其他内容(不是整数或字母“Q”),它会告诉他们这是不正确的,请再试一次。我认为这是我可以做到的,但它会返回错误cannot find symbol。帮助非常感谢!询问整数作为输入并退出如果q但如果任何其他字母再试

import java.util.Scanner; 

public class PointCheck{ 

    public static void main(String[] args){ 

     try { 

     System.out.println("Welcome"); 
     System.out.println("To quit at anytime please type \"Q\". Enter point:"); 

     char Q = 'Q'; 
     char q = 'q'; 
     Scanner scan = new Scanner (System.in); 
      input = scan.next(); 

     while (input.hasNext()) { 
      if (input.hasNextInt()) { 
       System.out.println("Int input"); 
      } 
      else if (input.equals("Q")) { 
       System.out.println("Exiting"); 

      } 
      /*else { 
       System.out.println("You did not enter a valid value. Please enter a number or \"Q\" to quit."); 
      }*/ 

     } 

     } 

     catch(Exception e){ 
     System.out.println("Exiting Program."); 

     } 

    } 

} 

如果我不注释掉最后一个else语句,它只是默认为那个,并且永远循环我的错误信息。

+0

在行'input = scan.next()'输入没有声明的类型。在此之后,您正尝试使用'input'而不是'scan'作为'Scanner'。 – Kevin

+0

你没有声明输入,如果你将它定义为字符串比hasnext和hasintnext不会与它合作 –

回答

1

我使你的代码进行一些修改,希望它能帮助:)

public class PointCheck { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    try { 

     System.out.println("Welcome"); 
     System.out.println("To quit at anytime please type \"Q\". Enter point:"); 
     Scanner scan = new Scanner(System.in); 

     while (scan.hasNext()) { 
      if (scan.hasNextInt()) { 
       System.out.println("Int input" + scan.nextInt()); 
      } else { 
       String input = scan.next(); 
       if (input.equalsIgnoreCase("Q")){ 
        System.out.println("Exiting"); 
        break; 

       }else { 
        System.out.println("You did not enter a valid value. Please enter a number or \"Q\" to quit."); 
       } 
      } 

     } 

    } catch (Exception e) { 
     System.out.println("Exiting Program."); 

    } 
} 

} 
+0

这是非常有用的。谢谢!我意识到我做错了什么:) –

0

你可以试试这个... 的投入将只需要整数,如果输入以外的任何其他一个Integer,它将抛出一个异常并移动到程序将终止的catch块。

import java.util.Scanner; 

public class demo { 
    public static void main(String[] args) { 
     System.out.println("Welcome"); 
     System.out.println("Press any key to exit.. Enter point:"); 
     Scanner scanner= new Scanner(System.in); 

     while (true){ 
      try { 
       int number = scanner.nextInt(); 
       System.out.println(number); 
      } 
      catch (Exception e){ 
       System.exit(0); 
      } 
     } 
    } 
} 
+0

OP不希望应用程序终止。请阅读帖子。 – DevilsHnd

0

像这样的东西可能是你喜欢的。阅读代码中的注释:

System.out.println("Welcome"); 
Scanner scanner= new Scanner(System.in); 
int number = 0; 
while (true){ 
    System.out.println("Enter point (q to quit): "); 
    String strg = scanner.nextLine(); 
    // Get out of loop if q or Q or quit, 
    // or QUIT, or Quit, etc is entered. 
    // providing the input actually contains 
    // something. 
    if (!strg.equals("") && strg.toLowerCase().charAt(0) == 'q') { 
     break; 
    } 
    // Use the String.matches() method with regex to 
    // determine if an integer number was supplied. 
    if (!strg.matches("\\d+")) { 
     System.err.println("Invalid Entry - Integer values only! Try again.\n"); 
     continue; // Start loop from beginning. 
    } 
    // Convert string number to Integer. 
    number = Integer.parseInt(strg); 
    break; // Get outta loop  
} 
String msg = "The number entered is: " + number; 
if (number == 0) { msg = "Nothing Entered!"; } 
System.out.println(msg); 
相关问题