2016-12-13 55 views
1

我需要从用户那里获取数字的开始和结束范围,并制定一种方法,将数字范围返回给用户。 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 ; 

     } 
+0

1.如果你正在使用int为什么你使用'byte'? 2.不要用'System.out.println'打包调用'numberPrinter'只需调用'numberPrinter'并设置所有的打印。 – alfasin

+0

如果您的目标确实是要创建一个**返回**数字范围的方法,那么您的方法完全错误。你的方法当前返回一个字节,但它打印**一个数字范围。 –

+0

该数字必须低于100,所以我使用了字节,因为它只允许+127的数字。好吧,我已经删除了System.out.println,但为什么会停止打印两次的最终范围? – Ninja2k

回答

3

方法numberPrinter打印所有从startNum数endNum所以没有在打印方法的返回值点。

只需从行删除打印:

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

到:

numberPrinter (startNum, endNum) 
+0

这有效,但为什么!不应该由于返回范围而打印两次最终值;我的方法也是我的逻辑好,我想从一开始就尝试和学习良好的习惯。 – Ninja2k

+1

仅当您使用println方法时,该值才会打印到屏幕上。当我们在主函数的最后一行中删除调用时,程序打印值的唯一位置就在numberPrint方法内。这种方法打印每个数字一次 – Amityo

+0

您应该使用整数而不是字节,改变方法@Wasi艾哈迈德使用如用户想将进入射程只有1-100 INT不浪费内存建议 – Amityo

0

你打印的numberPrinter()的返回值,这是最后一个值。从main()删除最后一个print语句,并更改返回类型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++) ; 

      } 

    } 
+0

我没有意识到你可以使用void来接受两个字节参数的方法。将尽快尝试。 – Ninja2k

0

要求用户输入一个数a和b,并使用while,显示你的 a++直到a < b

1

更改numberPrinter()函数的返回类型为void,并避免在main()函数中打印来自numberPrinter()的返回值。只需拨打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; 
} 
+0

好的,我会保存这段代码,我需要使用我自己的代码,因为这是我的第一次尝试,但将保存为最佳做法。 – Ninja2k

+0

@ Ninja2k我很欣赏,如果您有兴趣从'numberPrinter()'方法返回值,您可以在答案中看到我的更新。 –

相关问题