Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с классом Vector. Не компилируется программа. 
:(
    Опции темы
noCooL
Дата 3.4.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Итак, при компиляции следующего текста:
Код

import java.io.*;
import java.util.*;
public class Prost{
 public static void main(String[] args) throws IOException{
  BufferedReader vvod = new BufferedReader(new InputStreamReader(System.in));
  System.out.println("BBeDu, Do KoToPoro 4iclLa Mbl uLLl,em nPoCTbie...");
  String b = vvod.readLine();
  System.out.println("2");
  int a = Integer.parseInt(b);
  a=(int)Math.sqrt(a);
  int l=0;
  Vector v = new Vector();
  v.add(new Integer(2));
  for(int i=3;i <=a;i++){
   for(int j=0;j< (int)v.size();j++)
    if(i % v.get(j)!=0)
    l++;
   if(l==0)
   v.add(new Integer(i));
   l=0;
   System.out.println(i);
  } 
 }
} 

компилятор выдает строчку:
___________________________
D:\prog>javac Prost.java
Prost.java:16: operator % cannot be applied to int,java.lang.Object
if(i % v.get(j)!=0)
^
1 error
___________________________

Что здесь не так?

PM MAIL   Вверх
COVD
Дата 3.4.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



v.get(j) возвращает Object.

надо

Код

if(i %  ((Integer)v.get(i)).intValue()     !=0)



PM MAIL   Вверх
chief39
Дата 3.4.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(noCooL @ 3.4.2006, 15:43 Найти цитируемый пост)
operator % cannot be applied to int,java.lang.Obje

Ты делишь примитив(число типа int) на Object(который, возможно будет даже не числовым объектом а каким-то String или даже SessionContext или вообще любым классом) smile

Тебе надо ЯВНО привести сей полученный Object к числовому Объекту типа Integer, а из него уже извлечь примитив(число) типа int


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
noCooL
Дата 3.4.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 3.4.2006

Репутация: нет
Всего: нет



Ту проблему исправил.
Появилась новая.
Код:
Код

import java.io.*;
import java.util.*;
public class Prost{
 public static void main(String[] args) throws IOException{
  BufferedReader vvod = new BufferedReader(new InputStreamReader(System.in));
  System.out.println("Введи диапазон простых чисел...");
  String b = vvod.readLine();
  int a = Integer.parseInt(b);
  int l,j;
  Vector v = new Vector();
  v.add(new Integer(2));
  for(int i=2;i <=a;i++){
   l=0;
   j=0;
   while((j<v.size()) && (l==0)){
    if(i %  ((Integer)v.get(i)).intValue()     !=0)
    l++;
    j++;
   }
   if(l==0)
   v.add(new Integer(i));
   
   System.out.println(i);
  } 
 }
} 

Компилятор выдает:

D:\prog>java Prost
Введи диапазон простых чисел...
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Array index
out of range: 2
at java.util.Vector.get(Unknown Source)
at Prost.main(Prost.java:16)

Не думаю, что ошибка в логике, т.к. с массивами она прекрасно работала...
Где ошибка? smile

p.s. смутила 12 строчка, и я записал вместо нее
Код

while((j<=v.size()) && (l==0)){

Та же тема...


Это сообщение отредактировал(а) noCooL - 3.4.2006, 20:05
PM MAIL   Вверх
powerOn
Дата 3.4.2006, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



noCooL, у тебя отладчик есть? Ты можешь(умеешь) по шагам программу исполнять?

Код

if(i %  ((Integer)v.get(i)).intValue()     !=0)


у тебя видимо эта строчка кидает исключение, поскольку элемента с индексом 2 не существует.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
chief39
Дата 4.4.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



noCooL,
У тебя логика циклов какая-то путаная...

В векторе у нас один элемент ( v.add(new Integer(2)); )
независимо от введённого числа

А когда попадаем в ((Integer)v.get(i)).intValue() - из вектора тянется ВТОРОЙ элемент
которого у нас нет, а i=2, значит всё-таки пытается второй(Я СКАЗАЛ - ГОРБАТЫЙ!!! smile )
А jvm и говорит: слющь, да? какой такой 2? Нэт такой элэмэнт! Адын есть! Два нэту!

Вобщем продумай логику циклов, лично мне непонятно что от них требуется в физю смысле smile


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
chief39
Дата 4.4.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Да! и ваапче!
Коль уж в цикле тянешь из коллекции(вектора к примеру), неплохо бы проверять границу, дабы до иксепшна не доводить. А у тебя проверяется j меньше сайза, а элемент тянется по i


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1627 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.