Java-программа - тест на делимость с вариацией - как мне написать это в текстовой панели

У меня есть написанная программа, однако у меня есть две проблемы, и мне нужна помощь для их исправления. проблемы

1) я не хочу, чтобы счетчик i переходил от 1 к x, потому что тогда он будет пытаться проверить делимость для каждого числа, меньшего, чем фактический ввод пользователя. Мне нужно, чтобы я начал с 2 и продолжал до 12, чтобы вы попробовали тест только для 2-12. 2) Тест на делимость правильный и работает для каждого числа, но это не то, о чем говорится в описании программы. Мне нужно реализовать упомянутые алгоритмы для каждого теста на делимость. (который я исследовал, но не уверен, как это сделать)

вот мой код и ниже задание:

import java.io.PrintStream;
import java.util.Scanner;

public class rwsFinalExam
{
    public static void main(String [] args)
    {
        Scanner scanner = new Scanner( System.in ); //allows input from concole
        PrintStream out = System.out;               //assigning System.out to PrintStream

        out.print( "Input a valid whole number: " ); //ouput directions for end user to enter a whole number

        String input = scanner.next();  //holds end user input
        int number;                     //data type and variable 

        try 
        {
            number = Integer.parseInt(input);   //assinging value to number //integer.parseInt method converts string to int
        }
        catch (Exception e)
        {
            out.println(input + " is not a valid number");
            return;
        }

        if (number < 0)
        {
            out.println(number + " is not a valid number");
            return;
        }

        printDivisors(number);
    }

    private static void printDivisors(int x)
    {
        PrintStream out = System.out;
        for (int i=1; i<x; i++) 
        {
            if (isDivisibleBy(x, i)) //checking divisibility 
            {
                out.println(x + " is divisible by " + i); //output when value is divisible 
            }
            else
            {
                out.println(x + " is not divisible by " + i); //output when value not divisible
            }//end if else
        }//end for
    }//end private static

    private static Boolean isDivisibleBy(int x, int divisor)
    {
        while (x > 0)
        {
            x -= divisor;
            if (x == 0)
            {
                return true;
            }
        }
        return false;
    }//end
}//end class rwsFinalExam

мне нужно, чтобы мой вывод выглядел так .. нельзя использовать оператор модуля %

Введите допустимое целое число: ABC

Ошибка: ABC недопустимый номер. Нажмите любую клавишу для продолжения. . .

Введите допустимое целое число: -1

Вывод: -1 недопустимое число. Нажмите любую клавишу, чтобы продолжить. . .

Введите допустимое целое число: 15

Выход: 15 не делится на 2. 15 не делится на 3. 15 не делится на 4. 15 не делится на 5. 15 не делится на 6. 15 не делится на 7. 15 не делится на 8. 15 не делится на 9. 15 не делится на 10. 15 не делится на 11. 15 не делится на 12. Нажмите любую клавишу, чтобы продолжить. . .


person JavaNewGirl    schedule 09.12.2012    source источник
comment
См. en.wikipedia.org/wiki/.   -  person irrelephant    schedule 10.12.2012
comment
Добро пожаловать в СО. Вам предлагается ознакомиться с часто задаваемыми вопросами.   -  person vainolo    schedule 10.12.2012


Ответы (1)


Чтобы проверить, делится ли a на b, не используя a % b, вы можете сделать следующее:

boolean divisible = (a / b * b == a);

Причина, по которой это работает, заключается в том, что a / b является целочисленным (то есть усекающим) делением.

person NPE    schedule 09.12.2012