Java 输出在数组中不断重复
这段代码的目的是提示用户输入十个数字,将这些数字放入一个数组中,确定该数组中的哪个数字是最小数字,并显示“最小数字是:[最小数字]”。我的代码基本上是按照它的假设来做的,但当涉及到输出时,它会在整个数组中给出一个0.0值,直到最后,当它给出最小值时。我不明白为什么会发生这种情况,我已经想尽一切办法来解决它,但似乎没有任何效果Java 输出在数组中不断重复,java,arrays,numbers,min,minimum,Java,Arrays,Numbers,Min,Minimum,这段代码的目的是提示用户输入十个数字,将这些数字放入一个数组中,确定该数组中的哪个数字是最小数字,并显示“最小数字是:[最小数字]”。我的代码基本上是按照它的假设来做的,但当涉及到输出时,它会在整个数组中给出一个0.0值,直到最后,当它给出最小值时。我不明白为什么会发生这种情况,我已经想尽一切办法来解决它,但似乎没有任何效果 import java.util.Scanner; public class Question7_9 { public static void main(Str
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
new Question7_9().min(array);
}
}
public static void min(double[] array) {
double m = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (m > array[i]) {
m = array[i];
}
}
System.out.print("The minimum number is: " + m);
}
}
import java.util.Scanner;
公开课问题7_9{
公共静态void main(字符串[]args){
double[]数组=新的double[10];
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入十个数字:”);
for(int i=0;i
初始化整个阵列后(即for循环后),应找到最小值:
for(int i=0;i
如果在循环中调用
min
方法,您将搜索最小array.length
次,并且在除上次之外的所有时间中,您将在仍然具有一些默认0.0
值的数组中搜索最小值,因此,除非您输入一些负数,否则最小值将为0.0
。这是因为每次用户输入数字时,您都在运行min(array)
方法
只需写一行newquestion7_9().min(数组)代码>在for
循环之后
这是完整的运行程序
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
}
new Question7_9().min(array);
}
public static void min(double[] array) {
double m = array[0];
for (int i = 1; i <= array.length - 1; i++) {
if (m > array[i]) {
m = array[i];
}
}
System.out.print("The minimum number is: " + m);
}
}
import java.util.Scanner;
公开课问题7_9{
公共静态void main(字符串[]args){
double[]数组=新的double[10];
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入十个数字:”);
for(int i=0;i
有几点值得注意:
- 只需调用
min
方法,就不需要创建新的Question7\u 9
对象。它是公共的
静态的
,因此您可以直接使用问题7\u 9.min
,甚至只使用min
,因为您在同一个类中调用它
- 在您的情况下,它实际上不需要是
静态的
或公共的
。要习惯正确的访问控制是值得的
- 与数组一起使用时,
for
语句有一种简写语法:for(double val:array)
- 您可以使用
Math.min
获取两个值中的较小值,而不是使用if
语句
- 让
min
返回最小值比打印最小值更有意义。
min
方法将在空数组上引发异常。最好检查该值或使用默认值(如Double.POSITIVE_∞)李>
把所有这些放在一起:
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
}
System.out.println("The minimum number is " + min(array));
}
private double min(double[] array) {
double min = Double.POSITIVE_INFINITY;
for (double value: array) {
min = Math.min(min, value);
}
return min;
}
}
看一下快速排序。这是一个众所周知的排序算法,它将对数组进行排序。然后可以将数组的第一个索引显示为已排序的索引。
import java.util.Scanner;
public class Question7_9 {
public static void main(String[] args) {
double[] array = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
for (int i = 0; i < array.length; i++) {
array[i] = input.nextDouble();
}
System.out.println("The minimum number is " + min(array));
}
private double min(double[] array) {
double min = Double.POSITIVE_INFINITY;
for (double value: array) {
min = Math.min(min, value);
}
return min;
}
}
Scanner input = new Scanner(System.in);
DoubleStream.generate(input::nextDouble).limit(10).min()
.ifPresent(min -> System.out.println("The minimum number is " + min));