好的,所以我正在尝试创建一个程序,当给定一个从 0 到 6 的数字时,它将返回一周中的某一天(例如 0 = 星期日,1 = 星期一......之后,它将要求用户输入另一个数字,并计算出该天数中的哪一天。所以它看起来像这样:
输入数字:0
输入已过去的天数:4
现在是星期天,将来是星期四
我尝试了几种不同的方法,但似乎找不到一种有效的方法。这是我提出的最新内容:
import java.util.Scanner;
public class code
{
public static void main (String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("Enter today's day:");
int num = scanner.nextInt();
if(num > 6 || num < 0) {
System.out.println("This is an invalid number");
}
switch(num) {
case 0:
String day = "Sunday";
break;
case 1:
String day = "Monday";
break;
case 2:
String day = "Tuesday";
break;
case 3:
String day = "Wednesday";
break;
case 4:
String day = "Thursday";
break;
case 5:
String day = "Friday";
break;
case 6:
String day = "Saturday";
break;
}
Scanner scanner2 = new Scanner(System.in);
System.out.println("Enter the number of days elapsed since today:");
int num2 = scanner2.nextInt();
int newday = num + num2;
while(newday > 6) {
newday = newday - 7;
}
switch(newday) {
case 0:
String day2 = "Sunday";
break;
case 1:
String day2 = "Monday";
break;
case 2:
String day2 = "Tuesday";
break;
case 3:
String day2 = "Wednesday";
break;
case 4:
String day2 = "Thursday";
break;
case 5:
String day2 = "Friday";
break;
case 6:
String day2 = "Saturday";
break;
}
System.out.println("Today is " + day + " and the future day is " + day2);
}
}
以下是编译器给我的错误:
14 errors found:
File: C:Usersexercise_4_5.java [line: 19]
Error: variable day is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 22]
Error: variable day is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 25]
Error: variable day is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 28]
Error: variable day is already defined in method main(java.lang.String[])
File: C:Userscpde.java [line: 31]
Error: variable day is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 34]
Error: variable day is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 55]
Error: variable day2 is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 58]
Error: variable day2 is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 61]
Error: variable day2 is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 64]
Error: variable day2 is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 67]
Error: variable day2 is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 70]
Error: variable day2 is already defined in method main(java.lang.String[])
File: C:Userscode.java [line: 75]
Error: cannot find symbol
symbol: variable day
location: class code
File: C:UsersDesktopcode.java [line: 75]
Error: cannot find symbol
symbol: variable day2
location: class code
我对编程很陌生,Java是我的第一语言。任何帮助和修复将不胜感激。提前谢谢你。
import java.util.Scanner;
/**
*
* @author wathsara
*/
public class Code {
public static void main (String[] args)
{
String day="",day2="";
Scanner scanner = new Scanner(System.in);
System.out.println("Enter today's day:");
int num = scanner.nextInt();
if(num > 6 && num < 0) {
System.out.println("This is an invalid number");
}
switch(num) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
}
Scanner scanner2 = new Scanner(System.in);
System.out.println("Enter the number of days elapsed since today:");
int num2 = scanner2.nextInt();
int newday = num + num2;
while(newday > 6) {
newday = newday - 7;
}
switch(newday) {
case 0:
day2 = "Sunday";
break;
case 1:
day2 = "Monday";
break;
case 2:
day2 = "Tuesday";
break;
case 3:
day2 = "Wednesday";
break;
case 4:
day2 = "Thursday";
break;
case 5:
day2 = "Friday";
break;
case 6:
day2 = "Saturday";
break;
}
System.out.println("Today is " + day + " and the future day is " + day2);
}
}
试试上面的代码。 问题是你声明了一个字符串变量 day 6 次,字符串变量 day2 6 次,这就是代码没有执行的原因。
在我看来,您的解决方案不是很有效。这是关于算法,而不是Java语言本身。试试这个:
- 一次接收 2 个输入。
- 初始化从星期日 (索引:0( 到星期六 (索引: 6( 的数组或列表
- 将这两个输入相加,并在将其除以 7 时取余数。我希望余数的结果是从 0 到 6
- 获取数组在余数索引处 的值
关系,这是一个简单的修复。我在开关案例语句外部而不是内部声明了变量"day"和"day2"。
import java.util.Scanner;
public class exercise_4_5
{
public static void main (String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.println("Enter today's day:");
int num = scanner.nextInt();
if(num > 6 || num < 0) {
System.out.println("This is an invalid number");
}
String day = "Invalid";
switch(num) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
}
Scanner scanner2 = new Scanner(System.in);
System.out.println("Enter the number of days elapsed since today:");
int num2 = scanner2.nextInt();
int newday = num + num2;
while(newday > 6) {
newday = newday - 7;
}
String day2 = "Invalid";
switch(newday) {
case 0:
day2 = "Sunday";
break;
case 1:
day2 = "Monday";
break;
case 2:
day2 = "Tuesday";
break;
case 3:
day2 = "Wednesday";
break;
case 4:
day2 = "Thursday";
break;
case 5:
day2 = "Friday";
break;
case 6:
day2 = "Saturday";
break;
}
System.out.println("Today is " + day + " and the future day is " + day2);
}
}
在开关外的每个开关案例中声明这些字符串变量,并在第 1 天和第 2 天创建,它将起作用。
有很多事情会使你的代码效率非常低下。以下是一些改进
-
所有重复的代码都应该在一个函数中。获取数字并获取日期的代码应该是不同的函数(切换大小写(。
-
使用 % (Mod( 运算符获取 newDay 的日期,而不是 while 循环。
newDay = (num1 + num2)%7
-
您可以使用地图代替开关盒。
-
String day
和String day2
的范围仅限于开关外壳内部,不能在开关外壳外使用。在外部声明变量,只需更改 switch 语句中的值。import java.util.HashMap; import java.util.Scanner; import java.util.Map; class Ideone { private static String getDay(int num){ Map<Integer, String> days = new HashMap<Integer, String>(); days.put(0, "Sunday"); days.put(1, "Monday"); days.put(2, "Tuesday"); days.put(3, "Wednesday"); days.put(4, "Thursday"); days.put(5, "Friday"); days.put(6, "Saturday"); return days.get(num); } public static void main(String[] args){ Scanner scanner = new Scanner(System.in); System.out.println("Enter today's day: "); int num = scanner.nextInt(); System.out.println("Enter the number of days elapsed since today: "); int num2 = scanner.nextInt(); if (num < 0 || num > 6){ System.out.println("Invalid Number"); System.exit(0); } int newDay = (num + num2) % 7; System.out.println("Today is " + getDay(num) + " and the future day is " + getDay(newDay)); } }