Квадратное приложение в Java - PullRequest
0 голосов
/ 18 октября 2018

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

Код, который я до сих пор придерживался.Я столкнулся с проблемой, когда мой код не будет читать отрицательные целые числа в строки и правильно предлагать пользователю ввести правильные данные.Я считаю, что мне нужно вложить свои петли, но у меня возникают проблемы с этим.Любая помощь будет принята с благодарностью.Благодарю.

import java.util.Scanner;

public class Squaring {

    public static int getValidInt(int greaterThan, Scanner scan) {
        System.out.println("Enter an integer greater than " + greaterThan + ":" );
        int input; 

        while ( !scan.hasNextInt() ) { 
            String garbage = scan.next();
            scan.nextLine(); 
            System.out.println(garbage + " is not valid input."); 
            System.out.println("Enter an integer greater than " + greaterThan + ":" );
        }

        while ( !((input = scan.nextInt()) > greaterThan )) { 
            int garbage = input; 
            System.out.println(garbage + " is not greater than 1.");
            System.out.println("Enter an integer greater than " + greaterThan + ":" );
        }

        return input; 
    }


    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a = 1 ;
        int total = 0;
        a = getValidInt(a,scan);
        int b = a; 
        System.out.println(a);
        long n = a; 
        while ( n < 1000000 ) {
            System.out.println(n*n);
            n = n * n; 
            total = total + 1; 
        }
        System.out.println(b + " exceeded 1,000,000 after " + total + " squarings.") ;
    }
}

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Без всякой попытки:

public static int getValidInt(int greaterThan, Scanner scan) {
    int input = 0;
    boolean valid = false;

    while (!valid) {
        System.out.println("Enter an integer greater than " + greaterThan + ":");

        if (!scan.hasNextInt()) {
            String garbage = scan.next();
            System.out.println(garbage + " is not valid input.");
        } else {
            input = scan.nextInt();

            if (input <= greaterThan) {
                System.out.println(input + " is not greater than " + greaterThan);
            } else {
                valid = true;
            }
        }
    }

    return input;
}

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

    int a = getValidInt(1, scan);
    System.out.println(a);

    int total = 0;
    long n = a;

    while ( n < 1000000 ) {
        n = n * n;
        System.out.println(n);
        total++;
    }

    System.out.println(a + " exceeded 1,000,000 after " + total + " squarings.") ;
}
0 голосов
/ 18 октября 2018

Я придумал следующее:

public static int getValidInt(int greaterThan, Scanner scan) {

    int number = greaterThan;

    do {
        while (!scan.hasNextInt()) {
            String garbage = scan.next();
            System.out.println(garbage + " is not valid input.");
        }
        number = scan.nextInt();

        if (number < greaterThan) {
            System.out.println("input is: " + number + " minimum is: " + greaterThan);
        }

    } while (number < greaterThan);

    return number;
}

Он имеет петлю do while, которая гарантирует, что number не может быть меньше greaterThan, если оно будетповторите цикл while.Внутри цикла do while находится другой цикл, который сообщает пользователю, что его ввод является мусором, и будет продолжать это делать до тех пор, пока не будет вставлено число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...