java从循环中获取数组元素
我试图从数组中获取一个元素,并在以后的代码中使用它,但代码中有一些逻辑错误。我希望用户输入他或她需要清洁的日期,然后打印出清洁的日期。代码如下:
import java.util.Scanner;
public class arrayLoopTest {
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
String[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
int i = 0;
while (true) {
System.out.println("On what day should the cleaning be scheduled ? ");
String schedule = scr.nextLine();
for (i = 0; i < days.length; i++) {
if (days[i].equals(schedule)) {
System.out.println("Cleaning scheduled for " + schedule);
} else {
System.out.println("Invalid, You have to choose one of these days: \n " + days[i]);
}
}
}
}
}
控制台输出
On what day should the cleaning be scheduled ?
Thursday
Invalid, You have to choose one of these days:
Monday
Invalid, You have to choose one of these days:
Tuesday
Invalid, You have to choose one of these days:
Wednesday
Cleaning scheduled for Thursday
Invalid, You have to choose one of these days:
Friday
Invalid, You have to choose one of these days:
Saturday
Invalid, You have to choose one of these days:
Sunday
On what day should the cleaning be scheduled ?
# 1 楼答案
在检查任何一天是否匹配时,您要检查它是否匹配
day[i]
,并立即打印结果(甚至在检查数组的其余部分是否匹配之前)一种可能的解决方案是跟踪用户输入是否已将一天与布尔值匹配。试着这样做:
注意,我也改变了
对这个
# 2 楼答案
我认为逻辑错误在于,在循环数组时打印响应,所以它总是打印出“无效…”至少六次
相反,您可以在数组中循环,直到找到匹配项,然后根据是否找到匹配项打印响应:
# 3 楼答案
Java
Arrays
实用程序是你的选择。不用手动循环,你可以从数组中提取ArrayList
,使用IndexOf
找到你的一天资料来源:
http://www.tutorialspoint.com/java/util/arrays_aslist.htm
http://www.tutorialspoint.com/java/util/arraylist_indexof.htm
# 4 楼答案
请注意,有更有效、更简单的方法可以从循环中获取数组元素,但这是一种简单的方法,初学者应该很容易遵循
您有一个很好的for循环,但是在检查整个数组以查看用户输入是否匹配数组中的任何值之前,您正在向用户打印文本。我做了一个名为dayIsValid的布尔值,检查用户输入的字符串是否为有效日期。如果日期有效,则会打印出所需的消息。请注意,只有在我查看整个数组后,才会打印此消息
我注意到的另一件事是,您试图打印字符串数组中的所有日期,但只打印了一天。为了解决这个问题,我在字符串数组中循环,打印出值。希望这个解释对你有所帮助。如果您有任何问题,请随时在下面发表评论
# 5 楼答案
试试这个:
如果您担心性能,可以使用哈希集。如果你不知道如何使用,只需发送一条消息,我就会发布解决方案
# 6 楼答案
一个非常简单的方法是添加另一个变量:
然后在以后的代码中使用savedVar