2016-04-29 8 views
0

私のプログラムでは、エンジニアがサーバーにログインした回数を表示するための訪問ボタンがあります。このボタンにはエンジニアがログインした日時が表示されますが、エンジニアが初めてサーバーにログインしたときと同じ日時が表示されます。どんな援助も役に立つでしょう。訪問ボタンに異なる日付と時刻が表示されない

コード:

public String visits(String myCookie){ 
     if(numberOfVisits == 0){ 
      return "Engineer has not visited this machine"; 
     }else if(myCookie.equals(storedCookie)){ 
      for(int i = 0; i < numberOfVisits; i++){ 
      System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate)); 
      } 
      return storedCookie; 
     }else{ 
      for(int i = 0; i < numberOfVisits; i++){ 
       System.out.println("Engineer has visited on these date: " + dateFormat.format(storedDate)); 
      } 
      return ""; 
     } 
    } 
+1

質問に関連するコードの関連部分のみを投稿してください。人々はあなたが参照している部分を見つけようとするために、あなたのプログラム全体に目を通したいとは思わないでしょう。 –

+0

投稿を更新しました。 – iiAaronXiX

答えて

0

あなたのロジックはあなたが私はあなたの枝を実行するために明確かつ容易になりますので、あなたがチェックするものの順序を変更することをお勧めパラメータとして取得するものとコヒーレントである必要があります。

public String visits(String myCookie){ 
     if(myCookie.equals(storedCookie)){ 
      if(numberOfVisits == 0) 
        return "Engineer has not visited this machine"; 
      for(int i = 0; i < numberOfVisits; i++){ 
       System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate)); 
      } 
      return storedCookie; 
     } 
    return ""; 
    } 

私はこのstoredDate変数 を知りませんが、これはここにあります: System.out.println( "エンジニアはこれらの日付で訪問しました:" + dateFormat.format(storedDate)); はあなたには、いくつかの配列にし、あなたの質問は明確ではないインデックス

System.out.println("Engineer has visited on these dates: " + dateFormat.format(storedDate[i])); 
+0

このソリューションは、ユーザーがログアウトしてもユーザーが最初にログインしたときと同じ日付を表示しても訪問を印刷できなくなるため、機能しませんでした。 'エンジニアはこの日に訪問しました:29/04/2016 19:55 エンジニアはこれらの日程で訪問しました:29/04/2016 19:55 エンジニアはこれらの日程で訪問しました:29/04/2016 19:55' – iiAaronXiX

+0

はい... beacuseは同じです...いくつかのarraYでは? –

0

でそれを得ることを持っている必要があります...同じ日付を印刷する

が起こっています。

ログインした日付を収集するように求められているようです。そのため、ユーザーごとにコレクションオブジェクトを保管する必要があります。日付のみまたは日付時刻を使用するかどうかはわかりません。私は日時で行くつもりです。

私たちはListを使用して、時々刻々の順序でそれらを保持します。

私たちはInstantクラスを使用します。これは、ナノ秒の分解能でUTCのタイムライン上の瞬間です。 Java 8以降に組み込まれたjava.timeフレームワークの一部。

List<Instant> logins = new ArrayList<>(); 

そのユーザーがログインすると、現在の瞬間を追加します。

logins.add(Instant.now()); 

これらの収集された値を表示する場合は、ループします。 toStringメソッドは、デフォルトで標準ISO 8601形式の文字列を生成します。

System.out.println("You logged in at these date-times:"); 
for(Instant instant:logins) { 
    String output = instant.toString(); 
    System.out.println(output); 
} 

あなたは、ユーザーが期待するwall-clock timeに調整するtime zoneを適用することができます。

ZoneId zoneId = ZoneId.of("America/Montreal"); 
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneId); 

他の形式を使用する場合は、java.time.formatパッケージを参照してください。 java.timeは自動的に出力をローカライズすることもできます。日/月の名前と、カンマとピリオドの文化的な基準などを翻訳するには、人間言語の場合はLocaleを指定します。

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); 
formatter = formatter.withLocale(Locale.CANADA_FRENCH); 

ループ内にそのフォーマッタを使用します。

String output = zdt.format(formatter); 

ご質問がある場合は、編集して書き換えてください。

関連する問題