创建一个返回数字范围的方法?

时间:2016-12-13 22:42:09

标签: java methods

我需要从用户那里获取一个开始和结束的数字范围,并制作一个方法,将数字范围返回给用户,包括例如1, 2, 3, 4

我的方法返回两次包含最终值的值,我想是因为我在这里设置了返回类型。有没有办法可以改变我的方法以更好地工作?

class Test

{


    public static void main ( String[] args )

    {

        //Setup a Scanner
        Scanner scan = new Scanner ( System.in ) ;

        //Declare Variables
        byte startNum = 0 ;
        byte endNum = 0 ;

        //Get User Input//
        System.out.println ( " Please enter the starting range: " ) ;
        startNum = scan.nextByte() ;

        System.out.println ( " Please enter the final range: " ) ;
        endNum = scan.nextByte() ;

        //Call method
        System.out.println ( numberPrinter ( startNum, endNum ) ) ;


    }

    // A method to print out all the numbers between startNum and endNum.
    static byte numberPrinter ( byte a, byte b )

        {
            byte range = 0 ;

            while ( a <= b )

                {
                    range = a ;
                    System.out.println ( range ) ;
                    a++ ;

                }

            return range ;

        }

4 个答案:

答案 0 :(得分:3)

方法numberPrinter打印从startNum到endNum的所有数字,因此打印方法的返回值没有意义。

只需从行中删除打印件:

System.out.println ( numberPrinter ( startNum, endNum ) ) ; 

为:

numberPrinter ( startNum, endNum )

答案 1 :(得分:1)

numberPrinter()函数的返回类型更改为void,并避免在numberPrinter()函数内打印main()的返回值。只需拨打numberPrinter()功能即可。请注意,range函数内部不需要变量numberPrinter(),您可以直接使用变量a

public static void main(String[] args) {
    // your code goes here

    //Call method
    numberPrinter(startNum, endNum);
}

// A method to print out all the numbers between startNum and endNum.
static void numberPrinter(byte a, byte b) {
    while (a <= b) {
        System.out.println(a);
        a++;
    }
}

如果您有兴趣将指定范围内的所有数字从numberPrinter()返回到main()然后打印,则可以执行以下操作。

public static void main(String[] args) {
    // your code goes here

    //Call method
    byte[] result = numberPrinter(startNum, endNum);
    for (byte value : result) {
        System.out.println(value);
    }
}

// A method to return all the numbers between startNum and endNum.
static byte[] numberPrinter(byte a, byte b) {
    byte[] range = new byte[b - a + 1];
    for (byte i = a; i <= b; i++) {
        range[i - a] = i;
    }
    return range;
}

答案 2 :(得分:0)

您正在打印numberPrinter()的返回值,这是最后一个值。从main()删除最后一个打印语句,并将返回类型更改为void

public static void main ( String[] args )

{

    //...

    //Call method
    numberPrinter ( startNum, endNum ) ;


}

// A method to print out all the numbers between startNum and endNum.
static void numberPrinter ( byte a, byte b )

    {

        while ( a <= b )

            {
                System.out.println ( a++ ) ;

            }

    }

答案 3 :(得分:0)

要求用户输入数字a和b并使用显示您的while a++直到a < b