2016-12-13 4 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로 작업하는 경우 왜 '바이트'를 사용하고 있습니까? 2.'numberPrinter'에 대한 호출을'System.out.println '으로 래핑하는 대신 간단히'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 메소드를 사용할 때만 화면에 인쇄됩니다. 주 functiont의 마지막 줄에서 호출을 제거하면 프로그램에서 numberPrint 메서드 내부에 값을 인쇄 한 유일한 위치가됩니다.이 메서드는 각 숫자를 한 번만 출력합니다 – Amityo

+0

바이트 대신 정수를 사용해야하고 메서드를 @Wasi Ahmad가 제안한대로 변경해야합니다 – Amityo

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++) ; 

      } 

    } 
+0

2 바이트 매개 변수를 허용하는 메서드로 void를 사용할 수 있다는 것을 알지 못했습니다. 곧 이걸 시도 할거야. – Ninja2k

0

입력 할 수 A를 사용자에게 물어 B와 당신에게 a++

1

a < b까지 변경을 표시하는 while를 사용하는 numberPrinter() 함수의 반환 유형은 void으로, numberPrinter()의 반환 값은 main() 함수 내부에 인쇄하지 않는 것이 좋습니다. numberPrinter() 함수를 호출하기 만하면됩니다. 변수 rangenumberPrinter() 함수 안에 넣지 않아도되며 변수 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()'메소드에서 값을 반환하는 데 관심이 있다면, 내 업데이트를 볼 수 있습니다. –

관련 문제