我正在尝试打印扫描数字(x)以下的数字。我不知道怎么样,到目前为止我所拥有的只是如何打印最低数量的数组。不知道我怎么能把x包含在我的最后一个循环中。因此,如果我输入x = 13,我希望它打印出11,7,5,3,2。
import java.util.Scanner;
class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//1
int[] num= {2, 3, 5, 7, 11, 13, 17, 19};
for(int i=0; i<num.length; i++) {
System.out.println("Num: " + num[i]);
}
// 2
System.out.print("\n Type a number: ");
int x = scan.nextInt();
x = num[0];
for (int i=1; i>=num.length; i++) {
if(num[i] < x) {
x = num[i];
}
}
System.out.println("Numbers below" + x);
}
}
答案 0 :(得分:6)
你不是在for循环中打印任何东西,即使你是,for循环本身看起来有点奇怪。你是说i < num.length
吗?为什么要重新分配x
到num[0]
?试试这个:
for (int i = 0 ; i < num.length ; i++)
if (num[i] < x)
System.out.println(num[i]);
(务必删除x = num[0]
行。)
正如笔记一样,您也可以使用for-each循环:
for (int a : num)
if (a < x)
System.out.println(a);
答案 1 :(得分:5)
你可以这样做:
System.out.println("Numbers below " + x);
for (int i = 0; i < num.length; i++) {
if (num[i] < x) {
System.out.println(num[i]);
}
}
这是带有foreach循环的List
版本:
List<Integer> list = new ArrayList<Integer>();
for (int n: num) {
if (n < x) {
list.add(n);
}
}
System.out.println("Numbers below " + x + ": " + list);
输出:
Numbers below 13: [2, 3, 5, 7, 11]
答案 2 :(得分:3)
问题在于这一行System.out.println("Numbers below" + x);
,这必须在if块中的for循环中,但是有一些变化,因为你想要打印由num访问的数组元素System.out.println(num[i]);
[i]不是您的选择x
。
假设您要按照提及的顺序打印数组中的元素 .... So if i type x = 13, i want it to print out 11, 7, 5, 3, 2.
,以下代码将执行此操作。
import java.util.Scanner;
class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] num = { 2, 3, 5, 7, 11, 13, 17, 19 };
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
System.out.print("Type a number: ");
int x = scan.nextInt();
// Removing the below statement as it makes no sense.
// x = num[0];
// Looping in this sense after supposing you need to print the number in
// reverse order as per the question.
System.out.println("Numbers below");
//looping in the reverse order to meet the requirement
for (int i = num.length-1; i >= 0; i--) {
if (x > num[i]) {
System.out.println(num[i]);
}
}
// Moving this line in for loop within if block, but instead of x, we print num[i]
//System.out.println("Numbers below" + x);
}
}
答案 3 :(得分:1)
您的代码似乎很好。除非您必须迭代数组的所有项目(在键入数字后)。
您的代码正在评估i>=num.length
但它必须是i<num.length
,因为它与上一个循环相同(迭代所有项目)。
此外,起始值应为0,因为数组中的第一个位置为0.
所以,你应该这样做:
for (int i=0; i<num.length; i++) {
if (num[i] < x) { // if this value is lower than the entered value (x)
System.out.println(num[i]); // then I print it
}
请注意您不必重新分配x 。 x是您不想更改的输入值。你需要它来知道数组的每个项目是否低于它。