2013-03-22 3 views
-1

Мне нужно найти количество последовательных чисел в моем генераторе случайных чисел, у меня есть работающая программа, за исключением части последовательных чисел. Вот что я получил. Я пробовал много вещей, но по какой-то причине я просто не могу понять это, пожалуйста, помогите! Появилось 1000 номеров и 500 случайных чисел, затем я нашел наименьшие и самые большие значения, а затем средние. Теперь мне нужно найти, сколько последовательных чисел выйдет f.e. 9, 10, 11 или 55, 56, 57 ... Я также получаю эту ошибку ... --Exception в теме "главный" java.util.NoSuchElementExceptionПоиск количества последовательных чисел

int num, largest, smallest, sum = 0, count = 0; 
    int programnumber = 6; 
    header (prw, programnumber); 
    double average = 0; 

    Random gen = new Random(); 
    FileWriter fw = new FileWriter("randomdata.txt"); 
    for (int i1 = 0; i1 < 500; i1++){ 
     num = gen.nextInt(1000); 
     fw.write(num + "\n"); 
     count++; 

    } 
    fw.close(); 

    File numfile = new File("randomdata.txt"); 
    Scanner infile = new Scanner(numfile); 
    largest = infile.nextInt(); 
    smallest = infile.nextInt(); 
    largest = 0; 
    smallest = 999; 
    while (infile.hasNext()){ 
     num = infile.nextInt(); 
     System.out.println(num); 
     if (num > largest){ 
      largest = num; 
     } 
     if (num < smallest){ 
      smallest = num; 
     } 
     sum = sum + num; 
     count++; 
     } 
    average = (double) sum/count; 
    System.out.println("The largest is: " + largest); 
    prw.println("The largest is: " + largest); 
    System.out.println("The smallest is: " + smallest); 
    prw.println("The smallest is: " + smallest); 
    System.out.println("The average is: " + average); 
    prw.println("The average is: " + average); 

      // here is the part where I am stuck 
    int prev, consec=0; 
    prev= infile.nextInt(); 
    num= infile.nextInt(); 
    while (num >= 0) { 
     if (num >= prev){ 
      consec++; 
      prev = num; 
      num = infile.nextInt(); 
     } 

    } 
    System.out.println(consec); 








    prw.close(); 
} 
+3

Было бы проще помочь вам, если бы вы предоставили нам примерные входы и ожидаемые выходы. –

+3

Кажется, что вы запустили свой файл ввода до конца, прежде чем вы начали искать «последовательные» числа (что бы это ни значило). –

+1

И этот нижний цикл будет навсегда зацикливаться на первый раз, когда 'num> = prev' является ложным, так как после этого ничего не изменится. –

ответ

0

Не может быть num меньше нуля? Ошибка в вашем случае:

(num>=prev)

не означает, что они являются последовательными. Только первое больше или равно. Это должно быть (num+1==prev).

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

EDIT:

Эта часть кода:

largest = infile.nextInt(); 
smallest = infile.nextInt(); 
largest = 0; 
smallest = 999; 

отбрасывает первые два числа.

+0

как бы я дал ему что-то для чтения? – Chelsea

+0

Почему вы не подсчитываете, сколько последовательных чисел есть, когда вы вычисляете другие вещи? Или вы можете снова открыть файл. –

+0

Итак, введите if в while? – Chelsea

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