2016-04-03 17 views
1

Ich erstelle eine vierstellige Klasse (wie eine Uhr) beim Aufrufen von Methoden aus einer zweistelligen Klasse.Aufruf einer Set-Wert-Methode aus einer anderen Klasse

Die vierstellige Klasse hat zwei Segmente. Wenn Segment eins meinen eingestellten Maximalwert erreicht, muss das zweite Segment um eins erhöht werden.

das sind meine Methoden von meiner ersten Klasse:

/* 
* 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;} 

    } 

Dieses von meiner zweiten vierstelligen Klasse.

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

    } 

ich denke, es könnte mit == meinem Zuwachs etwas falsch sein 0. Es kompiliert nicht, wenn ich versuchen if (rightsegment.setValuePlusOne() == 0)

jede Beratung helfen würde. Vielen Dank!!

+1

'rightSegment.setValuePlusOne();' zurückkehren sollte 'int' zu kompilieren. –

+0

Verwenden Sie eine IDE, die Ihren Code automatisch einrückt und formatiert. Der Code, den Sie gepostet haben, ist etwas unordentlich, besonders die schließenden Klammern sind verwirrend. –

+0

Nun ... warum nicht, anstatt zwei separate Klassen zu verwenden, kombinieren Sie sie nicht nur zu einem, und verwenden Sie if-Anweisungen, um das Inkrement zu steuern? Ein wenig mehr Einblick in den Zweck Ihres Programms würde helfen, Sie in die richtige Richtung zu lenken. –

Antwort

1

setValuePlusOne (...) gibt nichts zurück. Rufen Sie setValuePlusOne vor dem if auf und verwenden Sie dann (rightsegment.getValue() == 0) für das if.

0

Bitte versuchen Sie den folgenden Code. Ich hoffe, der folgende Code wird Ihnen helfen, Ihre Implementierung zu erreichen. Anstatt den Ganzzahlwert TOO_HIGH im Block if else des unten angegebenen Codes festzulegen, können Sie ihn in den RightSegment- bzw. LeftSegment-Klassen festlegen, wodurch die Klasse Clock erweitert wird. Dank

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

}

Verwandte Themen