2016-12-05 32 views
-2

我一直在编写这个程序,但我有一点卡住,想要一些建议。这是我到目前为止有:输出数组中的最小整数,它的索引

import java.util.Scanner; 

public class SmallestInArray 
{ 
    public static void main(String[] args) 
    { 
     int[] array = new int[10]; 
     input(array); 
     output(array); 
    } 

    public static void input(int[] array) 
    { 
     Scanner kybd = new Scanner(System.in); 
     System.out.println("Enter 10 integers: "); 
     for (int i = 0; i < array.length; i++) { 
      array[i] = kybd.nextInt(); 
     } 
    } 


    public static int findSmallest(int[] array, int first) 
    { 
     int smallestPos = first; 
     for (int i = first + 1; i < array.length; i++) { 
      if (array[i] < array[smallestPos]) { 
       smallestPos = i; 
      } 
     } 
     return smallestPos; 
    } 

    public static void output(int[] array) 
    { 
     for (int i = 0; i < array.length; i++) { 
      System.out.print(array[i] + " "); 
     } 
     System.out.println(); 
    } 
} 

一切比findSmallest法测得的其他,我想输出的最小值和它的索引,但我不太清楚作为主要方法中的参数传递?

+1

恰好是不工作怎么办?你期望输出什么?你会得到什么输出? – 2016-12-05 20:16:30

+0

那么例如,如果我有System.out.println(findSmallest());我不知道要传入什么参数才能输出最小值和索引 – Luke

+0

为什么添加'first'参数?去掉它。或者调用值为'0'。 – Andreas

回答

0

请查收重构代码,让你无论是价值和最小元素的索引在数组中。

import java.util.Scanner; 

public class SmallestInArray 
{ 
    int index_of_smallest_element; 
    public static void main(String[] args) 
    { 
     int[] array = new int[10]; 
     input(array); 
     SmallestInArray smallestInArray = new SmallestInArray(); 
     System.out.printf("Smallest Value:%d corresponding Index:%d\n",smallestInArray.findSmallest(array), smallestInArray.index_of_smallest_element); 
     output(array); 
    } 

    public static void input(int[] array) 
    { 
     System.out.println("Enter 10 integers: "); 
     try (Scanner kybd = new Scanner(System.in)) 
     { 
      for (int i = 0; i < array.length; i++) 
      { 
       array[i] = kybd.nextInt(); 
      } 
     } 
    } 

    public int findSmallest(int[] array) 
    { 
     int smallestValue = array[0]; 
     index_of_smallest_element = 0; 
     for (int i = 1; i < array.length; i++) { 
      if (smallestValue > array[i]) // it doesn't accounts for duplicate values 
      { 
       smallestValue = array[i]; 
       index_of_smallest_element = i; 
      } 
     } 
     return smallestValue; 
    } 

    public static void output(int[] array) 
    { 
     for (int i = 0; i < array.length; i++) { 
      System.out.print(array[i] + " "); 
     } 
    }} 

希望这有助于

0

试试这个

public static void main(String[] args) 
    { 
     int[] array = new int[10]; 
     input(array); 
     output(array); 

     int smallestPos = findSmallest(array, 0 /* P.S. this parameter seem to be useless */); 
     int smallestVal = array[smallestPos]; 
     // output the two 
    }