2017-05-03 1 views
-3

私は単純なJavaのストップウォッチのコードを持っていますが、何らかの理由で常に0という時間を与えています。 私の変数と正しいものはないと思います...しかし、主な機能の間にメソッドを呼び出すことと関係がありますか?イムストップウォッチクラスは静的ではありませんのでストップウォッチのJavaコードは常に0を返す

import java.util.Scanner; 
public class Stopwatch{ 
    private float startTime; 
    private float endTime; 

    public float start(){ 
    startTime = System.currentTimeMillis(); 
    } 
    public float end(){ 
    endTime = System.currentTimeMillis(); 
    } 
    public float elapsedTime(){ 
    float elapsedTime = startTime - endTime; 
    System.out.println(elapsedTime); 
    } 
    public float getStartTime(){ 
    System.out.println(startTime); 
    } 
    public float getEndTime(){ 
    System.out.println(endTime); 
    } 
    public static void main(String[] args){ 
    String readString; 
    Scanner scr1 = new Scanner(System.in); 
    System.out.println("Press Enter to Begin the Stopwatch"); 
    if (scr1.hasNextLine()) 
     Stopwatch.start(); 
    System.out.println("Press Enter to Stop the Stopwatch"); 
    Scanner scr2 = new Scanner(System.in); 
    if (scr2.hasNextLine()) 
     Stopwatch.end(); 
    System.out.println("Elapsed Time is: " + Stopwatch.elapsedTime()); 

    } 
} 
+6

あなたが提供したコードはコンパイルされていません。あなたが実際に走った[mcve]を提供してください。 (なぜ 'hasNextLine'もチェックしているのかどうかはっきりしていませんが...)私はすべての問題が' Scanner'を使っている方法と関係していると思っています。(2つのインスタンスを作成するのは良い考えではありません)、基本的にストップウォッチの部分とは関係ありません。 –

+0

あなたはなぜこれがうまくいかないかもしれないかあなた自身に尋ねることができます:*** Stopwatch.start()*** ... ***と同じですStopwatch.end()*** –

+0

また 'float elapsedTime = startTime - endTime; 'ねじれているようだ? – xander

答えて

0

...必ず、完全に正直に言うと失われていないが、あなたはその方法を使用できるようになる前に、そのクラスの要素をインスタンス化する必要があります。すべてのなどmain()の開始時に

、変数の宣言時に、Stopwatch s = new Stopwatchを追加し、s.start()ような方法を使用し、s.end()

+1

負の値を返す経過時間も見てください。 'endTime'は常に' startTime'よりも大きな値になります。 – Nico

0

まず、コードはコンパイルさえしません。 mainのようなメソッドstaticからメソッドを呼び出す場合、呼び出されるメソッドはstaticでなければなりません。それ以外の場合は、Stopwatchというインスタンスを作成し、作成したインスタンスのメソッドを呼び出します。次に、floatの代わりにlongを使用する必要があります。以下のコードの作業バージョンを参照してください。

import java.util.Scanner; 

public class Stopwatch { 
    private static long startTime; 
    private static long endTime; 

    public static void start() { 
     startTime = System.currentTimeMillis(); 
    } 

    public static void end() { 
     endTime = System.currentTimeMillis(); 
    } 

    public static float elapsedTime() { 
     long elapsedTime = endTime - startTime; 
     System.out.println(elapsedTime); 
     return elapsedTime; 
    } 

    public static void getStartTime() { 
     System.out.println(startTime); 
    } 

    public static void getEndTime() { 
     System.out.println(endTime); 
    } 

    public static void main(String[] args) { 
     Scanner scr1 = new Scanner(System.in); 
     System.out.println("Press Enter to Begin the Stopwatch"); 
     if (scr1.hasNextLine()) { 
      Stopwatch.start(); 
     } 
     System.out.println("Press Enter to Stop the Stopwatch"); 
     Scanner scr2 = new Scanner(System.in); 
     if (scr2.hasNextLine()) { 
      Stopwatch.end(); 
     } 
     System.out.println("Elapsed Time is: " + Stopwatch.elapsedTime()); 

    } 
} 
関連する問題