Problema ao criar conjuntos numericos

6 respostas
D

Galera,
To com um probleminha, será q alguém pode me ajudar?

Seguinte: criei 2 conjuntos numericos inteiros negativos… mas na hora q vou instanciar o objeto, o eclipse lança um erro:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: -1
at conjuntos.Cin.<init>(Cin.java:08)
at conjuntos.Principal.main(Principal.java:07).

a classe principal:

public class Principal{
	public static void main(String[] args) {

        int n1[] = {-1,-3,-5,-7,-9,-11};
		int n2[] = {-2,-4,-6,-8,-10,-11};

        Cin E = new Cin(n1);
	Cin F = new Cin(n2);

        
}

Eis a classe problemática:

public class Cin  {
	private String x;

public  Cin(int vet[]){ //método construtor da classe Cin
		char v[] = x.toCharArray();
		
		for(int i=0; i<vet.length; i++){
			v[vet[i]] = 'V';
		}
		x = String.valueOf(v);
	}

>

6 Respostas

peczenyj

nessa linha

v[vet[i]] = ‘V’;

vc esta acessando um valor negativo no array. acho que vc quer usar um Set só não sabe como.

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html

E

Pelo que imagino, ele acha que Java == JavaScript.

No JavaScript, um array é na verdade um SortedMap <Object, Object> (a menos que o compilador de algumas implementações do Javascript, como o do Firefox, do Chrome ou do Safari 5, determinem usando alguma “mágica compilacional” que o array pode ser representado como um array mesmo). Portanto, em Javascript é possível ter qualquer índice para um array, inclusive strings. Ou seja, tanto faz em JavaScript escrever

a [“b”]

quanto

a.b

que são mais ou menos a mesma coisa.

Em Java isso não ocorre: arrays são arrays bem bobocas (mais bobos que o do próprio C, onde se inspiraram), e eles começam sempre por 0 e terminam em length - 1. Não é possível ter um índice negativo em um array, por exemplo.

Não sei se o pessoal do Java 7 já conseguiu terminar a implementação e os testes de um recurso novo que foi prometido (aprovado para o “Project Coin”), que é o uso da notação de arrays para acessar Maps. Se isso entrar no Java 7, você poderia ter algo como:

Map<String, Integer> golsPorJogador = new TreeMap<>(); // A notação <> já está no Java 7
golsPorJogador ["Elano"] = 1;
golsPorJogador ["Maicon"] = 1;
golsPorJogador ["Kaka"] = 0;
if (golsPorJogador ["Robinho"] == null) ...
D

Náo enendi mt bem como usar o set…

Na verdade o que eu quero é receber índices e substituí-los pela letra ‘V’.

E todos os números inteiros têm que ser obrigatoriamente negativos.

E o compilador não aceita valores negativos na String…

WellingtonRamos

Acredito que String x seja instanciada em algum momento (senão nem chegaria no erro de ArrayIndexOutOfBounds)

em v[vet[i]], no primeiro loop se comportaria assim:
v[vet[0]] //aqui, i = 0
v[-1] //aqui, vet[0] = -1 conforme teu conjunto, onde o primeiro item é -1.

Você pretende trocar os valores de uma String em determinados ponotos por V?
Tipo abcdefghijk por VbVdVfVhVjV? Então teus conjuntos deveriam possuir apenas valores positivos

WellingtonRamos

entanglement:
Não sei se o pessoal do Java 7 já conseguiu terminar a implementação e os testes de um recurso novo que foi prometido (aprovado para o “Project Coin”), que é o uso da notação de arrays para acessar Maps. Se isso entrar no Java 7, você poderia ter algo como:

Map<String, Integer> golsPorJogador = new TreeMap<>(); // A notação <> já está no Java 7 golsPorJogador ["Elano"] = 1; golsPorJogador ["Maicon"] = 1; golsPorJogador ["Kaka"] = 0; if (golsPorJogador ["Robinho"] == null) ...


Interessante essa nova implementação, mas tenho receio de que acabe por tornar a leitura do código pior…
Entretanto há situações onde será bem vinda :wink:

WellingtonRamos

[email removido:
]Náo enendi mt bem como usar o set…

Na verdade o que eu quero é receber índices e substituí-los pela letra ‘V’.

E todos os números inteiros têm que ser obrigatoriamente negativos.

E o compilador não aceita valores negativos na String…


Tente inverter os valores para positivo então:

Criado 15 de junho de 2010
Ultima resposta 16 de jun. de 2010
Respostas 6
Participantes 4