【问题标题】:User inputs Integer, when calling an array with this Int always returns 0?用户输入 Integer,用这个 Int 调用数组时总是返回 0?
【发布时间】:2013-02-19 16:20:30
【问题描述】:

所以我想让用户输入一个数字;变成一个整数。这应该在数组中查找并调用数字,由于某种原因,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.");

    }

}

【问题讨论】:

  • 在发布之前本地化和压缩您的代码。
  • @zvzdhk 代码明显本地化 :D
  • @KennyTM 我相信每个人都明白我的意思:)
  • 还是本地? ;)

标签: java arrays input integer


【解决方案1】:

你会的

dag[maandbeg] = datumbegmax;

用 0 覆盖数组值,因为 int datumbegmax = 0;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    相关资源
    最近更新 更多