-3

我已经编写了程序但是我有两个问题:

  1. 我不希望计数器 i 从 1 变为 x,因为它会尝试对每个小于实际用户输入的数字进行可分性测试。我需要它从 2 开始 i 一直到 12 以便您只尝试 2-12 的测试。

  2. 可分性测试是正确的,它适用于每个数字,但这不是程序描述中所要求的。我需要为每个可分性测试实现上述算法。(我已经研究过,但不知道该怎么做)我拥有的这个简化程序更有意义 - 只是一个开始的地方会很有帮助

(注意:不能使用 % 模运算符)

Div by 2 最后一位是偶数 (0,2,4,6,8) 例如:128 是 129 不是 Div by 3 数字之和可以被 3 整除 Ex:381 (3+8+1=12, and 12÷3 = 4) Yes 217 (2+1+7=10, and 10÷3 = 3 1/3) No Div by 4 最后两位数能被 4 整除 例如:1312 是 (12÷4=3 ) 7019 不是 5 最后一位是 0 或 5 175 是 809 不是除以 6 (注:您可以将 6 作为单独的用户定义函数或使用 2 和 3 的函数)该数字可以被 2 和 3 整除例如:114(偶数,1+1+4=6 和 6÷3 = 2)是 308(偶数,但是 3+0+8=11 和 11÷3 = 3 2/3)否

还有更多 - 只是一个开始的地方或有一些有用信息的链接将不胜感激。谢谢

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
4

1 回答 1

0

您应该做的第一件事是获取数组中的数字。

 private static Boolean isDivisibleBy(int x, int divisor)
{
    char[]b=String.valueOf(x).toCharArray();
    //Store all your digits as characters
    int[]no= new int[b.length];
    for (int i=0;i<b.length;i++)
       no[i]=Integer.parseInt(String.valueOf(b[i]));
    //Now no contains all your integers as an array 
    if(divisor==2)
           return isDivisibleBy2(no);
    else if(divisor==3)
           return isDivisibleBy3(no);
    else if(divisor==4)
           return isDivisibleBy4(no);
    //...................
    else return false;
}

然后为每个测试编写一个类似 2 的方法:

private static Boolean isDivisibleBy2(int[] x){
         int lastDigit=x[x.length-1];
         if(lastDigit==0 || lastDigit==2 || lastDigit==4 || lastDigit==6 || lastDigit==8)
           return true;
        else
           return false;
}

无论如何,您必须为每个测试编写类似的代码。

于 2012-12-10T04:42:14.797 回答