2010-02-09 2 views
0

두 개의 숫자를 더하는 뮤 테이타 메서드를 어떻게 만들지 만 입력 한 추가 된 숫자가 음수이면 오류 메시지가 표시되고 첫 번째 번호. 제발 제안. 아무것도하지 않는 -두 개의 숫자를 더한 다음 메시지를 표시하는 뮤 테이타 메서드를 만드는 방법

public void restock(int newStockQuantity) 
    { 
    if(newStockQuantity < 0) 
     { 
      stockQ = stockQ; 
     } 
     { 
      system.out.println("Error not negative numbers"); 
     } 
    else 
     { 
      stockQ = stockQ + newStockQuantity;  
     } 
    }  
+0

여러분의 예는 여러분이 원하는대로 할 수 있습니다. 따라서 어떤 방식으로 고장 났는지 말해주십시오. –

+2

@Aaron - 편집에서 코드를 수정했습니다. :) – Bozho

+0

에 따르면 원래의 버전은 대괄호가 잘못 배치되어 컴파일되지 않습니다. – Bozho

답변

2

음, 한 가지 당신은

stockQ = stockQ; 

문을 필요가 없습니다.

다음은 "if"문에 여러 블록을 갖는 문제입니다. 당신이 가 무 조작 할당을 유지하려면 않은 경우, 당신은 당신의 방법을 변경할 수 : 제거 무 조작의 과제와

public void restock(int newStockQuantity) 
{ 
    if(newStockQuantity < 0) 
    { 
     stockQ = stockQ; 
     System.out.println("Error not negative numbers"); 
    } 
    else 
    { 
     stockQ = stockQ + newStockQuantity;  
    } 
} 

, 그것은 단지 :

public void restock(int newStockQuantity) 
{ 
    if(newStockQuantity < 0) 
    { 
     System.out.println("Error not negative numbers"); 
    } 
    else 
    { 
     stockQ = stockQ + newStockQuantity;  
    } 
} 

주 변화에서 "시스템"을 "시스템"으로 설정합니다. Java는 대소 문자를 구분합니다.

컴파일해야하며 작동해야합니다.

개인적으로 콘솔에 메시지를 출력하는 대신 메서드에 잘못된 인수가있는 경우 개인적으로 예외를 throw하는 것이 좋지만 상황에 따라 다릅니다.

if 문에 대해 여러 블록을 사용하는 것에 대한 나의 첫 번째 의견을 이해할 수 없다면, 좋은 입문용 자바 서적으로 돌아가서 if 문 구문을 살펴 보시기 바랍니다. 문제가 발생한 부분이 약간 명확하지 않습니다.

0

IMHO 가장 좋은 방법은 예외입니다. 또 다른 포인트는 잘못된 값을 출력하는 것이므로 메서드의 사용자는 오류의 원인을 알고 있습니다. 그것은 또한 귀하의 수표에 오류를 드러냅니다;). 세 번째 요점은 invariants를 먼저 확인하고, 예외 또는 appliable return-statement로 구제하는 것입니다.

public void restock(int newStockQuantity) { 
    if(newStockQuantity < 0) { 
    throw new IllegalArgumentException("new stock " + newStockQuantity " must not be negative"); 
    } 
    if (newStockQuantity == 0) 
    { 
    // nothing necessary, probably worth another exception? 
    return; 
    } 
    stockQ = stockQ + newStockQuantity; 
} 
관련 문제