我的代码中的用户输入不起作用,我做错了什么?

时间:2016-10-12 21:31:08

标签: java

我的任务是取十个用户输入数字的数组,然后找到最低和最高的数字。

我是根据课堂笔记完成的,但它不适用于netbeans。

import static java.lang.System.in;
import java.util.Scanner;
public class FindLargestSmallestNumber {
    public static void main(String[] args) {
        //array of 10 numbers
        int numbers[] = new int[]{0,0,0,0,0,0,0,0,0,0};
        int i=0;

        for(int x=1; x<numbers.length; i++)
        {
            Scanner user_input = new Scanner( System.in );
            System.out.println ("What is the "+ x +" number of the array");
            numbers [x] = in.nextInt( );
        }   

        //assign first element of an array to largest and smallest
        int smallest = numbers[0];
        int largest = numbers[0];

        for(i=1; i< numbers.length; i++)
        {
            if(numbers[i] > largest)
                    largest = numbers[i];
            else if (numbers[i] < smallest)
                    smallest = numbers[i];
        }

        System.out.println("Largest Number is : " + largest);
        System.out.println("Smallest Number is : " + smallest);
    }
}

3 个答案:

答案 0 :(得分:2)

数组索引从0开始

for for循环从index = 0开始到index&lt; 10

import java.util.*;
class MAXIMUMorMINIMUM{

    public static void main(String args[] ){
      Scanner in = new Scanner(System.in);

      //array of size 10
      int N = 10;
      int array[] = new int[N];
      for(int i = 0; i < N ;i ++){
        array[i] = in.nextInt();
      }

      int maximum = array[0];
      int minimum = array[0];
      for(int i = 0; i < N; i++){

        //maximum
        if(array[i] > maximum){
          maximum = array[i];
        }

        //minimum
        if (array[i] < minimum) {
          minimum = array[i];
        }

      }

      System.out.println("MAXIMUM : "+maximum);
      System.out.println("MINIMUM : "+minimum);


    }
}

答案 1 :(得分:1)

您的问题是,您在for循环中递增i而在第一个for循环中递增x。这使得它与x==1一起永远运行。每次循环代码运行时,您都会更改i,这对循环条件x<numbers.length没有影响。

由于您从x开始索引数组,因此您还希望0而不是1启动0

此外,for循环in内部实际上是System.in,因为您静态导入它。你应该写user_input.nextInt(),因为那是Scanner你做的。这种事情对你来说应该是显而易见的,特别是如果你使用的IDE会像netbeans一样突出你的东西。

答案 2 :(得分:0)

守则应该是

public static void main(String[] args) {

        //array of 10 numbers
        int [] numbers = {0,0,0,0,0,0,0,0,0,0};

        for(int x=0; x<numbers.length; x++)
        {
            Scanner user_input = new Scanner( System.in );
            System.out.println ("What is the "+ x +" number of the array");
            numbers [x] = user_input.nextInt();
        }   

        //assign first element of an array to largest and smallest
        int smallest = numbers[0];
        int largest = numbers[0];

        for(i=1; i< numbers.length; i++)
        {
                if(numbers[i] > largest)
                        largest = numbers[i];
                else if (numbers[i] < smallest)
                        smallest = numbers[i];
        }

        System.out.println("Largest Number is : " + largest);
        System.out.println("Smallest Number is : " + smallest);
}

当您创建扫描程序对象并需要使用它来从用户获取Input对象时 同样要实例化一个数组,你可以像上面一样调用它,或者像下面那样:

int[] numbers = new int [10];

此外,数组索引从0开始,而不是1