Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: тупая ошибка, помогите, скоро сессия!..  (Прочитано 16563 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Sandric
Wimdows SUX
Участник

ua
Offline Offline
Пол: Мужской
I hate myself and I wanna die


« : 02-12-2007 13:53 » 

Люди, я яву изучаю 1 семестр, тес более 2 лабу делаю,так шо сильно не матюкайтесь, а если можете, то помогите. кароче, вот моя лаба

само задание такое: нада сделать загрузку и выгрузку матрицы из и в файл, ввод с клавы, и умножение на число введённой матрицы. 1 пакет для окна, 2 для ф-й обработки матрицы

1 пакет

Код:
package frame_pack;

import matrix_pack.*;
import java.awt.*;

public class java_main extends Frame
{

public java_main()
{
addWindowListener(new myWindAdapter());
setLayout(new BorderLayout());
}

public static void main(String args[])
{
java_main frame = new java_main();
frame.setSize(400, 300);

MainClass matr = new MainClass();

//matr.InFromFile(); ////////////////////////////////////вот тут показует ошибку

Button save = new Button("Сохранить в файл");
save.addActionListener(
new SaveButtonListener(frame, matr));
frame.add(save, BorderLayout.EAST);
frame.setLocation(300, 300);
frame.setTitle("Лабораторная работа №2");

Label l1 = new Label("                                   Таблица отображения матрицы");
frame.add(l1, BorderLayout.NORTH);

Button load = new Button("Загрузить из файла");
save.addActionListener(
new LoadButtonListener(frame, matr));
frame.add(load, BorderLayout.WEST);

String val = "lalala";

TextArea tf = new TextArea(val);
frame.add(tf, BorderLayout.CENTER);

frame.setVisible(true);
}

}
+ там ишшо классы обработчики событий кнопки и выхода

2 пакет:

Код:
package matrix_pack;

import java.io.*;

public class MainClass
{
public String filePathI;
public String filePathO;

public int masx;
public int masy;

public int mas[][];


public MainClass()
{
filePathI = "111.txt";
filePathO = "222.txt";
}

public void InFromFile()throws IOException
{
InputStream myFile = new FileInputStream(filePathI);

masx = 0;
masy = 0;
int i;

while (myFile.available() > 0)
{
i = myFile.read();

if ((char)i == '\n')
{
if (masy == 0) masx++;
masy++;
}

if (masy == 0)
{
if ((char)i == ' ') masx++;
}
}
masy++;

myFile.close();

mas = new int[masy][];

for (int k = 0; k < masy; k++) mas[k] = new int[masx];

myFile = new FileInputStream(filePathI);

int num = 0;
int x = 0;
int y = 0;

while (myFile.available() > 0)
{
i = myFile.read();

if ((char)i == '\n')
{
y++;
x = 0;
}

else
{

if (i > 47 && i < 59)
{
i -= 48;
num = num * 10 + i;

}

else
{
mas[y][x] = num;
num = 0;
x++;
}
}

}

mas[y][x] = num;

myFile.close();

}

public void InFromKeyB()throws Exception
{
String s;
System.out.print("\nVvedite kolichestvo stolbcov matrici : ");

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
s = in.readLine();
masx = Integer.valueOf(s).intValue();

    System.out.print("\nVvedite kolichestvo radkov matrici : ");

s = in.readLine();
masy = Integer.valueOf(s).intValue();

mas = new int[masy][];

for (int k = 0; k < masy; k++) mas[k] = new int[masx];

for (int i = 0; i < masy; i++)
for (int j = 0; j < masx; j++)
{
System.out.print("\nVvedite element masiva  " + (i + 1) + "  " + (j + 1) + ": ");
s = in.readLine();
mas[i][j] = Integer.valueOf(s).intValue();
}
System.out.println("\n\tVvod okonchen");
}

public void MulMatrix()throws Exception
{
System.out.print("\nVvedite koeficient umnogeniya: ");

int koef;
String s;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
s = in.readLine();
koef = Integer.valueOf(s).intValue();

for (int i = 0; i < masy; i++)
for (int j = 0; j < masx; j++)
mas[i][j] *= koef;
}


public void WriteToFile()throws Exception
{
OutputStream myFile = new FileOutputStream(filePathO);

String s;

char masc[];

for (int i = 0; i < masy; i++)
{
for (int j = 0; j < masx; j++)
{

s = String.valueOf(mas[i][j]).toString();

masc = s.toCharArray();

for (int k = 0; k < s.length(); k++)
myFile.write(masc[k]);

myFile.write((char)' ');
}
myFile.write((char)'\n');
}

}


}
+ ишшо несколько классов, но то уже не важно.

короче, проблема в том, шо если я напишу :

Код:
		MainClass matr = new MainClass();
matr.InFromFile();

то оно показываит ошибку

Цитата
Severity and Description   Path   Resource   Location   Creation Time   Id
Unhandled exception type IOException   my_java/src/frame_pack   java_main.java   line 22   1196517028468   577

(в еклипсе 3) Примерно то же самое и в ВС 8. Когда делаю такое в консоли ( вопще это класс с 1 консольной лабы), или не вызываю эту функцию, а там изменю коета поле, то идёт нормально.
Вапше, низнаю...

F1!
Записан

We hate love, we love hate...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 02-12-2007 14:01 » 

(с явой не знаком, но - ) берём в руки отладчик, заходим в matr.InFromFile();
, определяем, на какой строчке выскочили из функции по эксепшену

какая строчка ?

и где исключение обрабатывается
Код:
ainClass matr = new MainClass();
matr.InFromFile();
- я не вижу обработчика Улыбаюсь
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 02-12-2007 14:02 » 

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

Sandric
Wimdows SUX
Участник

ua
Offline Offline
Пол: Мужской
I hate myself and I wanna die


« Ответ #3 : 02-12-2007 14:29 » 

Шота простите, н
Записан

We hate love, we love hate...
Sandric
Wimdows SUX
Участник

ua
Offline Offline
Пол: Мужской
I hate myself and I wanna die


« Ответ #4 : 02-12-2007 14:33 » 

я ремарил тупо все строчки( в описании метода InFromFile), и снова писало ошибку, потом убрал throws IOException и вроде пошло, но потом выбиваит дето 8 екс. ИО, причём 2 из них о том, что нету такого файла, а он ЕСТЬ!!! А черт его знает...
Записан

We hate love, we love hate...
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 02-12-2007 14:49 » 

Sandric, обработчик, это я имею в виду исключения:

в сишке было бы что то вроде
Код:
try
{
ainClass matr = new MainClass();
matr.InFromFile();
}
catch(IOException e)
{
   ...
}


--------

а под отладчиком тебе надо сделать останов в самом начале метода
InFromFile

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

Asver
Постоялец

by
Offline Offline
Пол: Мужской

« Ответ #6 : 05-12-2007 15:16 » 

Так как в классе MainClass в обьявлении метода InFromFile стоит throws IOException, то этот эксепшен надо обработать при вызове этого метода (в твоем случае в классе java_main,так как писал Алексей1153++).
Если же метод InFromFile обьявить без throws IOException, то try...catch надо будет добавить в этот метод.
Записан
Sandric
Wimdows SUX
Участник

ua
Offline Offline
Пол: Мужской
I hate myself and I wanna die


« Ответ #7 : 05-12-2007 19:54 » 

Уррра! заработало! Прастите, кнешна, но как бы это тупо не звучало, но проблема была в том, что прога "каким-то" образом не видела файлы, хотя я их и в срц и в бин, и кда тока не тыкал. Поместил их в корневом каталоге диска С, и всё запахало, блин, аж обидно, шо ошибка такая тупорилая... Улыбаюсь
Записан

We hate love, we love hate...
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #8 : 05-12-2007 21:31 » new

Sandric, Что у тебя является текушей директорией процесса?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines