2016-12-05 2 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

Что именно не работает? Какой результат вы ожидаете? Какой результат вы получаете? –

+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 
    }