2017-03-11 5 views
2
public class ScoreCard { strong text 
    private double[] scores; 
/** 
* @param val 
* @param low 
* @param high 
* @return low if val < low, 
* high if val > high, 
* val if val is between low and high 
*/ 

private double constrain(double val, int low, int high) { 
    if (val < low) 
     return low; 
    if (val > high) 
     return high; 
    else 
     return val; 
    } 

/** 
* DEEP copy m into scores with each item contrained between 0 and 100. 
* use method {@link this#constrain(double, int, int)}. 
* For example, if s = {-15.2, 67.4, 126.8}, scores should become 
* {0, 67.4, 100}, AND scores should be a DEEP copy of s. 
* @param s (assume s is not null) 
*/ 

public void setMarks(double[] s) { 
    for(int i = 0; i < s.length; i++) { 
     if (s[i] < 0 || s[i] > 100) 
      constrain(s[i], 0, 100); 
      this.scores[i] = s[i]; 
    } 
} 

나는이 코드 부분을 지금 당장 붙들고 있습니다. Javadoc 상태에서, 나는 "constrain"매개 변수를 "setMarks"로 호출하여 <의 점수를 0으로 설정하고 점수가 100에서 100으로 설정하는 데 어려움을 겪고 있습니다. 내 코드가 딥 카피를 제대로 작성하고 있다고 생각하지 않습니다. "s"를 "점수"로 바꿉니다.메서드에 매개 변수 전달 및 전체 복사본 만들기

올바른 방향으로 어떤 추진력이라도 대단히 감사하겠습니다.

+1

당신은 전화 한거야 구속(),하지만 당신은 방법을 반환하는 제한된 값을 무시하고 있습니다. –

답변

1

의 값을 scores에 할당하는 것은 constraints의 결과를 고려하지 않은 것입니다. 아래 코드는 그렇게해야합니다. 간단하고 깨끗한 대안으로

public void setMarks(double[] s) { 
    for(int i = 0; i < s.length; i++) { 
     if (s[i] < 0 || s[i] > 100) 
      this.scores[i] = constrain(s[i], 0, 100); // <- this solves! 
     else 
      this.scores[i] = s[i]; 
    } 
} 

:

private double constrain(double val, int low, int high) { 
    if (val < low) 
     return low; 
    if (val > high) 
     return high; 
    return val; // <- notice here 
} 

public void setMarks(double[] s) { 
    for(int i = 0; i < s.length; i++) { 
      this.scores[i] = constrain(s[i], 0, 100); // <- notice here 
    } 
} 
+0

if는 필요하지 않습니다. 그것은 방법 자체에 의해 수행됩니다. –

+1

지금 봅니다. 그래서 나는 먼저 "constrain"클래스를 통해 제대로 전달하지 않고 배열을 전달하려고했습니다. 도움을 주셔서 감사합니다 – copernicon1543

+0

아니, 당신은 제대로 배열을 setMarks 메소드에 전달하고 있지만 constrain 메소드 (클래스가 아님)를 사용하여 값 배열에 값을 올바르게 설정하지 않았습니다. – hmatar