2013-03-05 33 views
0

所以我想讓用戶輸入一個數字;變成一個整數。這應該看起來在一個數組中,並調出數字,出於某種原因,int總是變爲0.我做錯了什麼?用戶輸入Integer,當用這個Int調用一個數組時總是返回0?

下面是整個代碼;前20行是問題所在。

import java.util.*; 

public class test { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     // data tabellen 
     int[] dag = {0,31,28,31,30,31,30,31,31,30,31,30,31}; 


      //input begin  
      int datumbegmax = 0; 
      System.out.println("Startdate in month? From 1 to 12."); 
      int maandbeg = input.nextInt(); 
      dag[maandbeg] = datumbegmax; 
      System.out.println(dag[maandbeg]); 
      if (maandbeg < 1 || maandbeg > 12) { 
       System.out.println("ERROR, Start over."); } 
      System.out.println("Startdate in days? From 1 to 31."); 
      int datumbeg = input.nextInt(); 
      if (datumbeg < 1 || datumbeg > datumbegmax) { 
       System.out.println("ERROR, Start over."); 
      } 
      int urenbeg = 0 ; 
      System.out.println("Starting time in hours? From 0 to 24."); 
      urenbeg = input.nextInt(); 
      if (urenbeg < 0 || urenbeg > 24) { 
       System.out.println("ERROR, Start over."); 
      } 
      int minutenbeg = 0 ; 
      System.out.println("Starting time in minutes? From 0 to 60."); 
      minutenbeg = input.nextInt(); 
      if (minutenbeg < 0 || minutenbeg > 60) { 
       System.out.println("ERROR, Start over."); 
      } 

      //input eind 
      int datumeindmax = 0; 
      System.out.println("Einddatum in maand? Van 1 tot 12."); 
      int maandeind = dag[input.nextInt()]; 
      dag[maandeind] = datumeindmax; 
      if (maandeind < 1 || maandeind > 12) { 
       System.out.println("FOUT, Begin opnieuw."); 
      } 
      System.out.println("Einddatum in dagen? Van 1 tot 31."); 
      int datumeind = input.nextInt(); 
      if (datumeind < 1 || datumeind > datumeindmax) { 
       System.out.println("FOUT, Begin opnieuw."); 
      } 
      int ureneind; 
      System.out.println("Eindtijd in uren? Van 0 tot 24."); 
      ureneind = input.nextInt(); 
      if (ureneind < 0 || ureneind > 24) { 
       System.out.println("FOUT, Begin opnieuw."); 
      } 
      int minuteneind; 
      System.out.println("Eindtijd in minuten? Van 0 tot 60."); 
      minuteneind = input.nextInt(); 
      if (minuteneind < 0 || minuteneind > 60) { 
       System.out.println("FOUT, Begin opnieuw."); 
      } 
      int maand = maandeind - maandbeg; 
      int datum = datumeind - datumbeg; 
      if (datum < 0){datum = datum + dag[maandbeg];} 
      int uren = ureneind - urenbeg; 
      if (datum > 0) {uren = uren + datum*24;} 
      int minuten = minuteneind - minutenbeg; 
      if (minuten < 0){ 
       minuten = minuten + 60; 
       uren = uren - 1; 
      } 
      System.out.println("Total time: "+datum+" days, "+uren+" hours and "+minuten+" minutes."); 

    } 

} 
+0

定位和發佈之前壓縮你的代碼。 – bsiamionau 2013-03-05 10:04:56

+0

使用英語Pleasee – Azad 2013-03-05 10:09:10

+0

@zvzdhk代碼清晰*本地化*:D – kennytm 2013-03-05 10:09:51

回答

0

你做

dag[maandbeg] = datumbegmax; 

這將覆蓋0的數組值,因爲當然INT datumbegmax = 0;

System.out.println(dag[maandbeg]);打印0,則

+0

解決,謝謝。 – 2013-03-05 10:17:12

相關問題