与案例的可变不匹配

时间:2017-05-15 07:06:27

标签: java java.util.scanner

我正在尝试制作一个java问题, 我很新,还在学习,如果有人能发现我做错了什么我会感激任何帮助。

我试图在2000年到2016年的一年内输入用户类型,输出将是玩家统计信息。

谢谢

import java.util.Scanner;

public class NflPlayers{

    public static void main(String[]args) {

        Scanner input = new Scanner(System.in);

        System.out.print("Enter a Year (2000-2016): " );
        String year = input.next();
        input.close();

        if (yearNumber(year) == 0) {
            System.out.println("Year 2000-2016");
            System.out.println("Invalid year input.");
            System.exit(0);
    }

        System.out.println(year + " Passing touchdowns");
    }


         int getNumberOfPasses(int year) {

                switch (yearNumber(null)) {

                    case 1: return 28;
                    case 2: return 36;
                    case 3: return 33;
                    case 4: return 25;
                    case 5: return 34;
                    case 6: return 39;
                    case 7: return 36;
                    case 8: return 28;
                    case 9: return 0;
                    case 10: return 50;
                    case 11: return 24;
                    case 12: return 26;
                    case 13: return 28;
                    case 14: return 23;
                    case 15: return 28;
                    case 16: return 18;
                    case 17: return 0;
                        default: return 0;

                }
    }

        public static int yearNumber(String year) {

            int yearNumber;

            switch (year){
            case"2016":
                yearNumber = 1;
                break;

            case"2015":
                yearNumber = 2;
                break;

            case"2014":
                yearNumber = 3;
                break;

            case"2013":
                yearNumber = 4;
                break;

            case"2012":
                yearNumber = 5;
                break;

            case"2011":
                yearNumber = 6;
                break;

            case"2010":
                yearNumber = 7;
                break;

            case"2009":
                yearNumber = 8;
                break;

            case"2008":
                yearNumber = 9;
                break;

            case"2007":
                yearNumber = 10;
                break;

            case"2006":
                yearNumber = 11;
                break;

            case"2005":
                yearNumber = 12;
                break;

            case"2004":
                yearNumber = 13;
                break;

            case"2003":
                yearNumber = 14;
                break;

            case"2002":
                yearNumber = 15;
                break;

            case"2001":
                yearNumber = 16;
                break;

            case"2000":
                yearNumber = 17;
                break;

            default:
                yearNumber = 0;
                break;

            }

            return yearNumber;
        }


}

2 个答案:

答案 0 :(得分:0)

您可以使用do{}while()循环代替:

Scanner input = new Scanner(System.in);
String year;
boolean pass = false;
do {
    System.out.print("Enter a Year (2000-2016): ");
    year = input.next();
    try {
        if (Integer.parseInt(year) >= 2000 && Integer.parseInt(year) <= 2006) {
            System.out.println("true");
            pass = true;
        }
    } catch (NumberFormatException e) {
        System.out.println("Not correct try again");
    }
} while (!pass);

因此,如果用户输入2000年到2006年之间的年份,您可以通过,否则重复,直到用户输入正确的年份。

答案 1 :(得分:0)

我已运行您的代码并进行了检查。

您似乎遗漏了getNumberOfPasses()的方法调用,这是我可以告诉的主要问题。

System.out.println(year + " Passing touchdowns");您实际上并不想显示year,我相信您正在寻找的正确代码是:

    System.out.println(getNumberOfPasses(yearNumber(year)) + " Passing touchdowns");

这将贯穿两种方法以显示您需要的信息。但是,您需要将int getNumberOfPasses(int year)的方法标题修改为static int getNumberOfPasses(int year)

此外,您可以完全消除其中一种方法,只需将通道的返回值与您输入的年份相关联。而不是将数字从1-17传递到另一种方法。

希望这对您的项目有所帮助并祝您好运!