2016-03-25 3 views
0
import java.io.*; 
import java.util.*; 
import java.text.*; 

public class aaa { 

    public static void main(String args[]) throws IOException { 

     Scanner sf = new Scanner(new File("C:\\temp_Name\\DataGym.in.txt")); 
     int maxIndx = -1; 
     String text[] = new String[1000]; 
     while (sf.hasNext()) { 
      maxIndx++; 
      text[maxIndx] = sf.nextLine(); 
     } 

     sf.close(); 

     double average[] = new double[100]; 

     for (int j = 0; j <= maxIndx; j++) { 
      Scanner sc = new Scanner(text[j]); 
      int k = 0; 
      while (sc.hasNext()) { 
       average[k] = Double.parseDouble(sc.next()); 
       Arrays.sort(average); //returns 0 
       System.out.println(average[k]); 
       k++; 
      } 
     } 

    } 
} 

Без массивов Arrays.sort (в среднем) программа обычно печатает все значения массива. Однако, если я добавлю его в значения, все будут возвращены как ноль. Как это исправить?Java - Arrays.sort возвращает 0

+0

Что внутри файла? –

+0

'Arrays.sort' не возвращает никакого значения. – Andrew

+1

и что вы ожидаете? – Andrew

ответ

5

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

Предлагаю вам отсортировать массив после того, как все элементы были добавлены.

Также вы знаете размер массива должен быть

double average[] = new double[maxIndx+1]; 

Сокращенный вариант может выглядеть

Path path = Paths.get("C:\\temp_Name\\DataGym.in.txt"); 
double[] nums = Files.lines(path) 
        .mapToDouble(Double.parseDouble) 
        .sorted() 
        .toArray(); 
0

Это кажется маловероятным, что то, что вы написали, что вы на самом деле хотите. В частности, вы оставляете нулевой элемент массива text, содержащий null, и сортируете массив average каждый раз, когда вы устанавливаете любой элемент. Это действительно вызывает проблемы, потому что average имеет 100 элементов, и все они инициализируются до 0 при создании экземпляра массива. Если вы установите какой-либо один элемент, отличный от нуля, а затем отсортируйте массив, ненулевой элемент будет перенесен в конец, оставив на нем нуль.

Трудно сказать, чего вы на самом деле хотите, но, вообще говоря, перед его сортировкой заполнить массив всеми желаемыми значениями, и если в этом массиве будет зарезервировано больше места, чем нужно, тогда можно сортировать только элементы, которые используются.

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