用户输入Integer,当使用此Int调用数组时总是返回0?

时间:2013-03-05 10:00:52

标签: java arrays input 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.");

    }

}

1 个答案:

答案 0 :(得分:0)

你做

dag[maandbeg] = datumbegmax;
由于int datumbegmax = 0;

会将数组值覆盖为0

当然,System.out.println(dag[maandbeg]);打印0然后