2016-06-09 9 views
-1

Ich bin neu in Java. Ich versuche, einige Tage hinzuzufügen, abhängig von dem gewählten Gegenstand von einem Spinner, aber es scheint, dass es einen Fehler gibt.Wie Tage in Java hinzufügen?

Die Werte im Spinner sind: Today, Tomorrow, After two days, After three days. Kann mir bitte jemand helfen?

Es funktioniert perfekt für

Fall 0: "Heute"; Es zeigt das aktuelle Datum an, aber für den Rest funktioniert es nicht.

Danke!

date_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       Calendar c = Calendar.getInstance(); 
       rowvalue = parent.getItemAtPosition(position).toString(); 
       switch (position){ 
        case 0: 
         selectedDay = new SimpleDateFormat("yy/MM/dd").format(Calendar.getInstance().getTime()); 
         break; 
        case 1: 
         selectedDay = c.add(Calendar.DAY_OF_MONTH, 1); 
         break; 
        case 2: 
         selectedDay = c.add(Calendar.DAY_OF_MONTH, 2); 
         break; 
        case 3: 
         selectedDay = c.add(Calendar.DAY_OF_MONTH, 3); 
         break; 
       } 
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) {} 
}); 
+1

Wenn Sie sagen "funktioniert nicht", was Sie meinen, ist "nicht kompilieren", da wenn Sie [die Dokumentation für "Kalender # hinzufügen"] (http://docs.oracle.com/javase /8/docs/api/java/util/Calendar.html#add-int-int-), es ist ganz klar, dass es sich um eine Void-Funktion handelt - sie hat keinen Rückgabewert. Ihr erster Halt sollte immer die Dokumentation sein. –

+0

Was ist 'selectedDay'? Sie haben uns das nicht gesagt und die Erklärung nicht mit einbezogen. Ist es eine 'Schnur'? –

+0

Bitte entfernen Sie das Javascript-Tag von dieser Frage. –

Antwort

3

Die gesamte switch ist nicht erforderlich. Sie sagen, case 0 funktioniert, so denke ich, Sie wollen selectedDay das Ergebnis von format sein. So entfernen Sie die switch vollständig und ersetzen Sie es mit:

if (position >= 1 && position <= 3) { 
    c.add(Calendar.DAY_OF_MONTH, position); 
} 
selectedDay = new SimpleDateFormat("yy/MM/dd").format(c.getTime()); 

Calendar#add modifiziert die Kalender-Instanz; dann verwenden wir das beim Formatieren für selectedDay.

Verwandte Themen