我试图让这个程序取20个用户输入的数字,并找到20中最小和最大的。为什么这里的代码不起作用?它必须在For循环中完成,因为这就是赋值所需要的。
这是一个示例输出: 按Enter键开始
输入一个数字 4 输入一个数字 4 输入一个数字 4 输入一个数字 4 输入一个数字 五 输入一个数字 2 输入一个数字 3 输入一个数字 4 输入一个数字 五 输入一个数字 7 输入一个数字 2 输入一个数字 3 输入一个数字 4 输入一个数字 五 输入一个数字 6 输入一个数字 2 输入一个数字 3 输入一个数字 4 输入一个数字 五 输入一个数字 3 4是更大的数字。 3是最小的数字。
为什么7不是最大的,2是最小的?
import java.io.*;
import java.util.Scanner;
import java.text.*;
public class Unit3_Lesson4_16
{
static Scanner in = new Scanner(System.in);
public static void main() {
Scanner scanner = new Scanner(System.in);
DecimalFormat mf = new DecimalFormat("'$'###,###,###.00");
DecimalFormat df = new DecimalFormat("#.###");
int i, nb, smaller=0, bigger=0, current;
String start;
System.out.println("Hit Enter to Begin");
start = scanner.nextLine();
System.out.println("Enter a number");
nb = in.nextInt();
for (i=1; i<=19; i++)
{
System.out.println("Enter a number");
current = in.nextInt();
if (current < nb)
{
bigger = nb;
smaller = current;
}
else
{
smaller = nb;
bigger = current;
}
}
System.out.println(bigger + " is the bigger number.");
System.out.println(smaller + " is the smallest number.");
}
}
答案 0 :(得分:2)
对于什么?这应该有效:
for (i=0; i<20; i++)
{
System.out.println("Enter a number");
current = in.nextInt();
if (current < smaller)
{
smaller = current;
}
if(current > bigger)
{
bigger = current;
}
}
答案 1 :(得分:2)
你使这比它需要的更复杂。你应该只需要更大,更小和最新的变量(摆脱nb)。
更大和更小的不正确的原因是因为您在比较后进行了错误的分配。如果您刚读入的新值(当前)大于或大于小,则只需要进行一次分配。
出于某种原因,你正在进行更大和更小的任务。这是你的代码的一部分是错误的(你可以做一些简单的改进)。
MbDavis为您提供了完美的解决方案。去接受他的答案,以备将来参考,尽量不要发布家庭作业。这有点忌讳。
答案 2 :(得分:0)
这里你去了
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int sm, bg, curr;
//in.nextLine will consume the nextline when you hit enter.
System.out.println("Hit Enter to Begin");in.nextLine();
//We initialize smallest number and biggest number with the first given number
System.out.println("Enter a number");
sm = bg = in.nextInt();
for (int i = 0; i < 19; i++) {
System.out.println("Enter a number");
curr = in.nextInt();
//Checks input vs sm and bg
sm = (curr < sm ? curr : sm);
bg = (curr > bg ? curr : bg);
}
//Output
System.out.println(sm + " is the bigger number.\n" + bg + " is the smallest number.");
}
}