2016-04-03 4 views
1

Я создаю четырехзначный класс (например, часы) при вызове методов из двухзначного класса.вызов метода заданного значения из другого класса

Четырехзначный класс состоит из двух сегментов. Когда сегмент один достигает моего установленного максимального значения, второй сегмент должен увеличиваться на единицу.

это мои методы из моего первого класса:

/* 
* method to set the value 
*/ 
public void setValue(int anyValue){ 
    if((anyValue < TOO_HIGH) && (anyValue >= 0)){ 
     value = anyValue;} 
} 

/* 
* method to set the value plus one 
*/ 
public void setValuePlusOne(){ 
    int tempValue = value + 1; 
    if(tempValue < TOO_HIGH){ 
     value = tempValue;} 
    else{ 
     value = 0; 

     // value = tempValue % TOO_HIGH;} 

    } 

Это из моего второго четырехзначный класса.

/* 
* method to set the increment 
*/ 
public void setIncrement(int increment){ 
    rightSegment.setValuePlusOne(); 
    if(increment == 0) 
     leftSegment.setValuePlusOne(); 

    } 

Я думаю, что там может быть что-то не так с моим приращению == 0. Это не компилируется, когда я пытаюсь если (rightsegment.setValuePlusOne() == 0)

любой совет поможет. Спасибо!!

+1

'rightSegment.setValuePlusOne();' 'должна возвращать int' для компиляции. –

+0

Пожалуйста, используйте IDE, которая автоматически отступает и форматирует ваш код. Код, который вы опубликовали, немного грязный, особенно закрывающие фигурные скобки запутывают. –

+0

Ну ... почему бы не использовать два отдельных класса, вы не просто объединяете их в один и используете операторы if для управления приращением? Немного больше информации о целях вашей программы поможет вам в правильном направлении. –

ответ

1

комплектValuePlusOne (...) ничего не возвращает. Вызовите setValuePlusOne перед if, а затем используйте (rightsegment.getValue() == 0) для if.

0

Пожалуйста, попробуйте код ниже. Надеюсь, что приведенный ниже код поможет вам добиться вашей реализации. Вместо того чтобы установить значение TOO_HIGH целое в блоке if else приведенного ниже кода, вы можете установить его в классах RightSegment и LeftSegment соответственно, что расширяет класс Clock. Благодаря

package stackoverflow; 

public class Clock { 

private int value; 
private int TOO_HIGH; 
private Clock rightSegment; 
private Clock leftSegment; 


/* 
* method to set the value 
*/ 
public void setValue(int anyValue, String position){ 
    if(position.equals("right")){ 
     TOO_HIGH = 60; 
    }else if(position.equals("left")){ 
     TOO_HIGH = 13; 
    } 

    if((anyValue < TOO_HIGH) && (anyValue >= 0)){ 
     value = anyValue;} 
} 

/* 
* method to set the value plus one 
*/ 
public void setValuePlusOne(){ 
    int tempValue = value + 1; 
    if(tempValue < TOO_HIGH){ 
     value = tempValue;} 
    else{ 
     value = 0; 
    } 

     // value = tempValue % TOO_HIGH;} 

    } 


    /* 
    * method to set the i`ncrement 
    */ 
    public void setIncrement(int increment, Clock right, Clock left){ 
     rightSegment = right; 
     leftSegment = left; 
     //rightSegment = new Clock(); 
     //leftSegment = new Clock(); 
     rightSegment.setValuePlusOne(); 
     if(increment == 0){ 
      leftSegment.setValuePlusOne(); 
     } 

    } 

    public static void main (String args[]){ 
     Clock clock = new Clock(); 
     clock.rightSegment = new Clock(); 
     clock.leftSegment = new Clock(); 
     clock.rightSegment.setValue(12, "right"); 
     clock.leftSegment.setValue(12, "left"); 
     clock.rightSegment.setIncrement(0, clock.rightSegment, clock.leftSegment); 
     System.out.println("Time "+clock.leftSegment.value+":"+clock.rightSegment.value); 
    } 

}

Смежные вопросы