2012-01-26 3 views
0

Я изучаю Java, теперь работаю с массивами. Я выполняю упражнение, когда я собираюсь заставить пользователя вводить значения для целых двух целых массивов. Тогда я должен найти наименьшую ценность. Я делаю это, используя if-statement. Проблема в том, что компилятор всегда печатает число «0» для наименьшего значения. Я не могу узнать, что не так с моим кодом. Кто-нибудь может мне помочь, пожалуйста! код выглядит следующим образом:Найти самый маленький в массиве

import java.util.Scanner; 
    public class Oppgave79k 
    { 
public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 
    int t[][] = new int[2][3]; 
    int smallest = t[0][0]; 

    for (int row = 0; row < t.length; row++) 
     { 
     for (int column = 0; column < t[row].length; column++) 
      { 
      System.out.println("Enter values for array: "); 
      t[row][column] = input.nextInt(); 
      if (t[row][column] < smallest) 
       { 
       smallest = t[row][column]; 
       } 
      } 
     } 
    for (int row = 0; row < t.length; row++) 
     { 
     for (int column = 0; column < t[row].length; column++) 
      { 
      System.out.printf("%d ", t[row][column]); 
      } 
     } 
    System.out.printf("Smallest element is: %d\n", smallest); 
} 

}

+0

Почему бы не использовать ['Arrays.sort'] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort%28int []% 29) и захватить первый элемент из отсортированного массива? – mre

+1

Что такое 'C#' angle? – spender

+0

@mre: Это O (nlogn) вместо O (n).Он также изменяет массив, если вы не сделаете копию. – Brian

ответ

8

В этих строках:

int t[][] = new int[2][3]; 
int smallest = t[0][0]; 

вы начались с smallest как 0. Таким образом, если вы не ввести отрицательное число, это никогда не изменится.

Вы могли бы использовать:

int t[][] = new int[2][3]; 
int smallest = Integer.MAX_VALUE; 

, чтобы убедиться, что первый номер введен используется.

Как в стороне, ваш стиль отступов несколько нетрадиционный. Либо

for (...) { 
    // Code 
} 

или

for (...) 
{ 
    // Code 
} 

выглядеть хорошо для меня, но

for (...) 
    { 
    // Code 
    } 

очень необычно.

2

Ваше начальное значение smallest равно 0. Если ввести отрицательные числа через вход, вы должны получить значение, отличное от 0.

Рассмотрите возможность установки меньшего к первому значению входного сигнала.

0

Если вы учитесь Java или любого другого языка программирования

  1. Узнайте, как отлаживать код, это поможет вам понять, как компьютеры «думают»
  2. Если вы в самом начале, попробуй решить проблема без написания какой-либо одной строки кода, и это поможет вам думать как «компьютер»

Тогда вы увидите, что ваше начальное назначение smallest было неправильным.

0

Я бы предложил вам сначала ввести часть считывания и сохранить 2D-массив. И тогда вы можете установить наименьшее значение = t [0] [0]. И тогда этот алгоритм никогда не сломается. А также я предлагаю вам реализовать алгоритм сортировки для этого, а не найти наименьший элемент. Я могу заверить, что это будет большой опыт. А также использовать Eclipse IDE, которая является IDE с открытым исходным кодом. Там вы можете отлаживать свою точку, и это облегчит вашу жизнь кодирования.

Смежные вопросы