我是Java新手(一般编码)。我需要编写一个获取整数的方法,创建一个由整数长度为1-50的随机数组成的数组 (包括)并找到最大和最小数字。
我能够用随机数填充数组。但是,我的最小和最大不打印。我一直在看这个好几个小时没有运气 - 任何建议都会非常有帮助!谢谢。
import java.util.Scanner;
import java.util.Random;
class MinMax {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
//user input a number
System.out.println("Please enter an integer from 1 to 50: ");
int userNum = in .nextInt();
System.out.println();
int x;
int randNum;
int y;
//create random numbers and print
Random r = new Random();
for (int i = 1; i <= userNum; i++) {
randNum = r.nextInt(50) + 1;
System.out.println(randNum);
int[] array = new int[userNum];
for (x = 1; x < 1; x++) {
array[x] = randNum;
System.out.println(array[x]);
//find max
int largest = array[0];
int smallest = array[0];
for (int s = 0; s < array.length; s++) {
largest = array[s];
smallest = array[s];
if (array[s] > largest) {
System.out.println(largest);
//find min
} else if (array[s] < smallest) {
System.out.println(smallest);
} //for
} //if
} //for
} //for
} //main method
} //class
答案 0 :(得分:0)
这就是你要找的东西::
import java.util.Scanner;
import java.util.Random;
public class MinMax {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
// user input a number
System.out.println("Please enter an integer from 1 to 50: ");
int userNum = in.nextInt();
System.out.println();
int x;
int randNum;
int y;
int[] array = new int[userNum];
// create random numbers and print
Random r = new Random();
for (int i = 1; i <= userNum; i++) {
randNum = r.nextInt(50) + 1;
System.out.println("number " + i + ":: " + randNum);
array[i - 1] = randNum;
}
// print array
for (int s = 0; s < array.length; s++) {
System.out.println("array[" + s + "] number :: " + array[s]);
}
// find max
int largest = array[0];
int smallest = array[0];
for (int s = 0; s < array.length; s++) {
if (array[s] > largest) {
largest = array[s];
// find min
} else if (array[s] < smallest) {
smallest = array[s];
}
}
System.out.println("\nLargets Number:: " + largest);
System.out.println("Smallest Number:: " + smallest);
} // main method
} // class
使用循环时不要太混淆。编写代码时出现了一些错误。
1&GT;您已在for循环中声明了数组int[] array = new int[userNum];
。这意味着它将创建与循环迭代一样多的数组。外循环无法访问。
2 - ;与变量最大和最小int largest = array[0];
int smallest = array[0];
3&GT; for (x = 1; x < 1; x++)
控制永远不会进入循环,因为你的条件x <1永远不会满足,因为你已经启动x = 1并且它永远不会小于1,因为条件(x <1)。
建议::要查找最大值,您必须遍历数组并检查每个元素的最大值和最小值,并将其存储在单独的变量中,而不是在每次检查时打印它。
在我的代码中,我使用了三个for循环::
1&GT;&GT;生成并打印随机数。在同一个循环中,我填充了生成数字的数组。
2 - ;&GT;这里只是单独打印数组,以便在输出中更好地呈现。
3&GT;&GT;如果满足条件,则通过在if块中分配值来查找最大值和最小值。
我希望这能帮助您理解代码。
答案 1 :(得分:0)
//find max
int largest = array[0];
int smallest = array[0];
for (int s = 0; s < array.length; s++) {
largest = array[s];
smallest = array[s];
if (array[s] > largest) {
System.out.println(largest);
//find min
} else if (array[s] < smallest) {
System.out.println(smallest);
} //for
} //if
仔细看看这段代码。在循环内部,您正在设置
largest = array[s];
然后立即检查
if (array[s] > largest)
当然不是,你只是让他们平等!
将作业放在条件中:
// Remove largest = array[s]
if (array[s] > largest) {
largest = array[s];
}
同样适用于最小的。
注意:我建议不要评论关闭括号。注意只是不必要的努力,这是容易混淆的:在上面的代码片段中,//for
和//if
是相反的。此外,它并没有告诉你哪个&#34;如果&#34;或者&#34;对于&#34;它正在关闭。
简单地查看缩进是一种更简单的方法。
答案 2 :(得分:0)
您的程序没有使用随机数填充数组。它创建了几个数组,并用一个数字填充每个数组。你应该改变这部分程序:
Random r = new Random();
for (int i = 1; i <= userNum; i++) {
randNum = r.nextInt(50) + 1;
System.out.println(randNum);
int[] array = new int[userNum];
for (x = 1; x < 1; x++) {
array[x] = randNum;
System.out.println(array[x]);
/* min-max code */
}
}
到此:
Random r = new Random();
int[] array = new int[userNum];
for (int i = 0; i <= userNum; i++) {
array[i] = r.nextInt(50) + 1;
System.out.println(array[i]);
}
/* min-max code */
这将创建一个单独的数组,用随机数填充它,并打印数组的每个元素,这似乎是你想要的。
找到最小值和最大值的代码也不正确。
int largest = array[0];
int smallest = array[0];
for (int s = 0; s < array.length; s++) {
largest = array[s];
smallest = array[s];
if (array[s] > largest) {
System.out.println(largest);
} else if (array[s] < smallest) {
System.out.println(smallest);
}
}
到目前为止largest
实际上是数组中的最大值或最小值时,您应该只设置smallest
或array[s]
。要检查是否是这种情况,您可以使用Math.min()
和Math.max()
,它们分别返回两个值中的最小值或最大值。
int largest = array[0];
int smallest = array[0];
for (int s = 0; s < array.length; s++) {
largest = Math.max(array[s], largest);
smallest = Math.min(array[s], smallest);
}
System.out.println(largest);
System.out.println(smallest);