Очень расстроен моим профессором, потому что она не учила концепциям пытаться и поймать , а также не учила нас исключениям исключения , так что это мне очень сложно делать эту программу. Цель состоит в том, чтобы создать программу, в которой пользователя просят ввести целое число, которое печатает "Hello World", которое много раз превышает целое число. Проблема в том, что я не могу проверить, является ли пользовательский ввод целое число. Например, если пользователь решил ввести символ или двойной , как мне реализовать это в моем коде? И я не могу использовать выбросить исключения или попытаться поймать , потому что мы их еще не изучили. Спасибо, ребята !!!

 import java.util.Scanner;

public class PrintHelloWorld
{
   public static void main( String[] args )
   {
      Scanner scan = new Scanner(System.in);
      int number;

      System.out.println("Please enter an integer that shows the " + 
      "number of times to print \"Hello World\" : ");
      //store count
      number = scan.nextInt();

      System.out.print("Your integer is " + number);
      int remainder = number%1;
      int counts = 0;

      if( number>0 && remainder == 0)
      {
         while(counts <= number)
         {
            System.out.println("Hello World!");
            counts++;
            }
       }
       else
       System.out.print("Wrong, choose an integer!");

           }
         }
0
PatGreens 11 Янв 2014 в 03:43

3 ответа

Лучший ответ
scan.hasNextInt()

Проверит, является ли следующее значение во входном потоке целым числом.

Как таковой:

int number = -1;

System.out.println("Please enter an integer that shows the " + 
  "number of times to print \"Hello World\" : ");
//store count
if (scan.hasNextInt()) number = scan.nextInt();

if (number != -1) System.out.print("Your integer is " + number);
2
La-comadreja 11 Янв 2014 в 00:33

Вы можете использовать цикл и проверять ввод с помощью регулярного выражения, например:

Scanner scan = new Scanner(System.in);
String input = null;
while (true) {
    input = scan.nextLine();
    if (input.matches("\\d+")) {
        break;
    }
    System.out.println("Invalid input, please enter an integer!");
}
int number = Integer.parseInt(input);

Это будет продолжать запрашивать ввод до тех пор, пока не будет введено действительное целое число.

2
Keppil 10 Янв 2014 в 23:54

И я не могу использовать исключения throw или пытаться поймать, потому что мы их еще не изучили.

Для первой попытки вы можете создать метод, принимающий String в качестве параметра. Вы пройдете через все символы этой строки и проверьте, является ли каждый символ цифрой. Пока этот метод возвращает false, еще раз попросите пользователя ввести новый ввод.

Затем используйте Integer.valueOf, чтобы получить значение int ..

public static boolean isNumber(String input)
  1. Вам нужно будет использовать sc.nextLine(), чтобы получить ввод
  2. Метод Character.isDigit и toCharArray() будет полезно
1
Alexis C. 10 Янв 2014 в 23:51