2011-04-07 4 views
1

좋아요, 그래서 나는 setIncrement()라는 메서드를 만들려고합니다. 내가 사용하고있는 두 개의 클래스, FourDigit에는 두 개의 TwoDigit 객체가 있습니다. 나는 각각 segment1과 segment2를 호출했다. 그들의 관계는 : segment1.segment2입니다. 이 메소드는 segment2를 증가시키고 0으로 재설정되면 메소드는 segment1을 증가시킵니다.getValue 클래스에서 Java 호출

public void setIncrement(){ 
    segment2.incrementValue(); 
    if(segment2.getValue == 0){ 
     segment1.value = segment1.value +1; 
    }else{ 
     segment2=aNum%tooHighB; 
    } 
    getDisplayString(); 
} 

그것은 말한다 : 기호 변수를 찾을 수 없습니다 :

문제는이 코드 조각 내에 getValue() ??? 클래스

FourDigits : 숫자 클래스에서 방법을 취하고있다

public class FourDigits 
{ 
/** 
* Fields 
*/ 
private Digits segment1; 
private Digits segment2; 
private String displayString; 

/** 
* Constructor for objects of class FourDigits 
*/ 
public FourDigits(int anyHigha, int anyHighb) 
{ 
    segment1 = new Digits(anyHigha); 
    segment2 = new Digits(anyHighb); 
} 

/** 
* Mutator method to set values 
*/ 
public void setValues(int anyNuma, int anyNumb){ 
    segment1.setValue(anyNuma); 
    segment2.setValue(anyNumb); 
} 
/** 
* Mutator method to set the increments 
*/ 
public void setIncrement(){ 
    segment2.incrementValue(); 
    if(segment2.getValue == 0){ 
     segment1.value = segment1.value +1; 
    }else{ 
     segment2=aNum%tooHighB; 
    } 
    getDisplayString(); 
} 
/** 
* Mutator method to getDisplayString 
*/ 
public void getDisplayString(){ 
    System.out.println(segment1.displayString() ="." + segment2.displayString()); 
} 
} 

:

public class Digits 
{ 
/** 
* Fields 
*/ 
private int value; 
private int tooHigh; 
private String displayString; 

/** 
* Constructors 
*/ 
public Digits(int anyNum) 
{ 
    value = 0; 
    tooHigh=anyNum; 
    displayString = ""; 
} 
/** 
* Mutator method to set the value 
*/ 
public void setValue(int anyValue){ 
    if((anyValue < tooHigh) && (anyValue >= 0)){ 
     value = anyValue; 
    }else{ 
     value=0; 
    } 
} 
/** 
* Mutator method to add to the value 
*/ 
public void addValue(){ 
    if(value < tooHigh){ 
     value=value+1; 
    }else{ 
     value=tooHigh; 
    } 
} 
/** 
* Mutator method to increment the value 
*/ 
    public void incrementValue(){ 
    int incrementValue; 
    incrementValue = value + 1; 
    value = incrementValue % tooHigh; 
} 
/** 
* Mutator method to display the string 
*/ 
public void displayString(){ 
    if(value<10){ 
     displayString="0" + value; 
    }else{ 
     displayString="" + value; 
    } 
    System.out.println(displayString); 
} 
public int getValue(){ 
    return value; 
} 

} 
+0

당신이 (당신의'setIncrement에 "="기호 누락)' 함수를 호출한다. 그것은 "=="이어야합니다. 또한 스택 추적이 도움이됩니다. – gnomed

+0

내가 언급 한 오류를 방지하는 팁은 비교 순서를 뒤집는 것입니다. if (var == 0) 대신'if (0 == var)'를 사용합니다. 그런 식으로 if 문에서 실수 한 과제를 얻지 못할 것입니다. – gnomed

답변

0

게다가 모두가 한 말 :

수업 방법 Digits.incrementValue() 유형 void 때문에이 비교 확인합니다 결코 일이다
segment2.incrementValue() 

:

if(segment2.incrementValue() == 0){ //Corrected your equals operation 

I 다음과 같이 제안합니다.

  • 클래스에서 인스턴스 변수 value (value은 개인)의 getter 메서드를 만듭니다.
  • 은 (value에 대한 게터가 구현 가정) 예에서와 같이 비교 검사를 수행합니다

예 :

segment2.incrementValue(); 
if (segment2.getValue() == 0) { 
    //Do work.... 
    segment1.setValue(segment1.getValue() + 1); 
} 
+0

나는 그 값이 사적인 것이므로 작동하지 않을 것이라고 생각했지만, 단지 Digits의 값을 반환하는 getValue라는 메서드를 만들었습니다. 지금 당신의 제안을 사용할 때 기호 변수 getValue를 찾을 수 없다고 말했습니까 ?? – tekman22

+0

getValue() 메소드의 구현은 어디에 있습니까? ** 정확하게 ** public int getValue() {리턴 값; }'? –

+0

Digits 클래스에 포함되어 있습니다. 그렇습니다. 정확히 그렇습니다. 그리고 심지어 자체 클래스 내에서 테스트하려고 시도했습니다. – tekman22

0

당신은 비교할 때 '=='를 사용 할 필요가 여기에

는 클래스이다 값을 할당하는 '='대신 두 개의 숫자.

예 :

+0

OP의 질문에서,'segment2.incrementValue()'는'void' 타입입니다. –

0

귀하의 문제는이 라인 :

if(segment2.incrementValue() = 0){ 

그리고 컴파일러는 잘못을 정확히 알려줍니다 : 당신이 값, 변수가 아닌 무언가에 할당하려는 . 아마도 당신은 비교보다는 할당 할, 그래서 행은 다음과 같습니다

+0

감사합니다 !!!!!! – tekman22

+0

OP의 질문에서,'segment2.incrementValue()'는'void' 타입입니다. –

2

뿐만 아니라 할당 연산자 대신 동등 비교를 사용하는 등, 당신은 또한 segment2.value 대신 segment2을 설정하려고하고 있습니다. 나는 블록이 있어야한다 생각 : 아마도 당신이 새 값을 반환 할 반면 나는, aNum 또는 tooHighB, 당신을 마음 ... 그리고 순간에 incrementValue() 반환 무효에 대한 어떤 선언을 볼 수 없습니다

if (segment2.incrementValue() == 0) { 
    segment1.setValue(segment1.getValue() + 1); 
} else { 
    segment2.setValue(aNum % tooHighB); 
} 

.

(나는 방법에 의해 코드를 쉽게 읽을 수 있도록 공간을 활용하는 것이 좋습니다 것입니다.)

+0

세그먼트 2를 알아 차리기 위해 +1. 아무도하지 않았다. :) –

+0

@Swaranga Sarma, 우리가 말하는 Jon Skeet입니다. 그는 SO 컴파일러와 디버거입니다! LOL –

+0

몇 가지 이유가 있지만 지금은 내가 VOID를 가질 수 없다는 오류가 발생하고 있습니까? – tekman22

0

왜 [할당이 비교의 대신이다] 비교의이 종류가 있습니까 :

if(segment2.incrementValue() = 0) 

되지는

if(segment2.incrementValue() == 0) 

는 또한이에 증가() 방법을 변경해야합니다

public int incrementValue(){ 
    int incrementValue; 
    incrementValue = value + 1; 
    value = incrementValue % tooHigh; 
    return value; 
} 
+0

첫 번째 것은 전혀 비교가되지 않습니다 .... – jberg

+0

오른쪽 ... 정확히 :) –

0

누구나 ==을 얻었으므로 다른 오류를 지적하겠습니다.

FourDigits에는 Digits.value에 대한 액세스 권한이 없습니다. Digits에있는 setValue() 방법을 사용해야합니다.업데이트에 대한

편집 :

if(segment2.getValue == 0){ 

GetValue이 방법이며 그것의 끝 부분에 괄호가 필요합니다. 대신 당신이 필요합니다

if(segment2.getValue() == 0){ 
+0

setValue는이 클래스에서 여기서해야 할 일을하지 않습니다. 내가 값을 설정하는 것을 원하지 않는다. 나는 0에서 멈추고 매번 증가한다. getValue라는 메서드를 만들었는데, 이는 단지 반환 값입니다. 자리에 있지만 작동하지 않습니다. 어떤 아이디어? – tekman22

+0

@ jtm22 : jsut get 및 set을 사용하여 기본 증분. 'segment1.setValue (segment1.getValue() +1)' – unholysampler

+0

질문이나 아이디어가 있습니까? – tekman22

관련 문제