我正在尝试制作一个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;
}
}
答案 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传递到另一种方法。
希望这对您的项目有所帮助并祝您好运!