尝试使用For循环在20个用户输入的数字中查找最大和最小数字

时间:2015-04-07 22:23:40

标签: java

我试图让这个程序取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.");


}

}

3 个答案:

答案 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.");
}
}