Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2013, 21:21   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию Ошибка в коде (Java)

Всем доброго времени суток! Подскажите пожалуйста, какая здесь может быть ошибка. Я только начал разбираться с Java. К сожалению не все получается.
Код:
package numberzero;
import java.util.*;
import java.io.*;
public class NumberZero 
{ 
    int i;
    static Scanner reader = new Scanner(System.in);
    public static void main(String[] args) 
    {
        int n = 4;
        double[] x = new double[n];
        double[] y = new double[n];
        try
        {
            FileInputStream fi = new FileInputStream("File of input.txt");
            Scanner src = new Scanner(fi);
            for(int i = 0; i <= n; i++)
            {    
                x[i] = src.nextDouble();
                y[i] = src.nextDouble();
                System.out.println(x[i]);
            }
            fi.close();
        }catch (IOException e) {}
        
        int IER = 0;
        for(int i = 0; i <= n; i++)
            if (x[i] >= x[i+1])
            {
                IER = 1;
                break;
            }
        System.out.println("IER="+IER);
        
    }
}
Частично работае, но не полностью
Код:
run:
Exception in thread "main" java.util.NoSuchElementException
7.0  //это значения
7.0  //хранящиеся
7.0  //в текстовом
7.0  //файле, а дальше не понять что
	at java.util.Scanner.throwFor(Scanner.java:907)
	at java.util.Scanner.next(Scanner.java:1530)
	at java.util.Scanner.nextDouble(Scanner.java:2456)
	at numberzero.NumberZero.main(NumberZero.java:24)
Java Result: 1
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)
Начинающий програм вне форума Ответить с цитированием
Старый 09.03.2013, 21:28   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

не уверен, но у вас, похоже, в файле 4 числа, а вы читаете 8 (x и y)
ещё и ошибка в цикле (от 0 до 4 т. е. 5 итераций, а не 4... "i < n" пишем)
GreenWizard вне форума Ответить с цитированием
Старый 09.03.2013, 21:35   #3
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Да, глупые ошибки, впредь постараюсь быть по-внимательней. Спасибо Вам!

У меня ещё один вопрос, почему при записи массива x в текстовый файл, записываются не числа из которых он состоит, а какие-то символы?

Должно быть так в файле:

7.0 7.0 7.0 7.0

А почему-то так:

@ @ @ @

Последний раз редактировалось Stilet; 09.03.2013 в 23:20.
Начинающий програм вне форума Ответить с цитированием
Старый 09.03.2013, 23:19   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

в бинарном виде пишется, преобразуй число в строку и пиши в файл строку уже
Увы, в Яве я не силён, поэтому гугли как выполнять эти операции
GreenWizard вне форума Ответить с цитированием
Старый 09.03.2013, 23:20   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Начинающий програм
А как ты их записываешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2013, 23:22   #6
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Вот так записываю:
Код:
try
     {
        RandomAccessFile fo = new RandomAccessFile("File of output.txt","rw");
        for(int i=0; i<n; i++)
            fo.writeDouble(x[i]);
        fo.close();
     }catch(IOException e){}

Последний раз редактировалось Начинающий програм; 09.03.2013 в 23:25.
Начинающий програм вне форума Ответить с цитированием
Старый 09.03.2013, 23:42   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
fo.writeDouble(x[i]);
ну вот, Вы же даблы и пишите!

нет под рукой java, попробуйте так:
Код:
  fo.write(x[i]+" ");
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.03.2013, 08:35   #8
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

fo.write(x[i]+" "); Так тоже не работает, выдает следующую ошибку
Изображения
Тип файла: jpg 100320131431.jpg (241.5 Кб, 128 просмотров)
Начинающий програм вне форума Ответить с цитированием
Старый 10.03.2013, 08:53   #9
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Решил проблему с записью вещественного числа в текстовый файл следующим образом
Код:
fo.writeChars(x[i]+" ");
Возникла другая проблема. Почему с пробелами записывается(которые находятся по обе стороны от точки)?
Код:
 7 . 0   7 . 0   7 . 0   7 . 0
Как записать без пробелов, то есть
Код:
 7.0   7.0   7.0   7.0
Начинающий програм вне форума Ответить с цитированием
Старый 10.03.2013, 10:31   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что проблема в том, что строчки пишутся в Unicode (по два байта на символ).
А чем вызван выбор именно RandomAccessFile, чем Вас класс FileReader не устроил?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Найдите,пжл, ошибку в коде Java lelicki_bolicki Помощь студентам 10 19.10.2011 19:00
Разобраться в коде(Java) artem611 Помощь студентам 0 23.05.2011 11:04
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Ошибка в коде Java zorgies Общие вопросы по Java, Java SE, Kotlin 1 19.10.2010 15:18