Ajuda com algoritmo

Estou tentando resolver um algoritmo em Java, são minhas primeiras tentativas com Java por isso não sei muito bem.

O codigo é o seguinte…


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Map;
import java.util.StringTokenizer;

public class Spoj {
	/**
	 * @param args
	 */
	
	class Categoria
	{
		private  int nPalavras;
		private  Map<String, String> mapa;
		private  String nome;
		
		Categoria()
		{		
		}
		
		public void setQtdPalavras(int qtd)
		{
			this.nPalavras = qtd;
		}
		public int getQtdPalavras()
		{
			return this.nPalavras;
		}		
		public  void setNome(String nome)
		{
			this.nome = nome;
		}
		public String getNome()
		{
			return this.nome;
		}
		public void setMapa(Map<String, String> map)
		{
			this.mapa = map;
		}
		public Map<String, String> getMapa()
		{
			return this.mapa;
		}
		
	}
	
	public static void main(String[] args)throws Exception {

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String casos = in.readLine();		
		int caso = Integer.parseInt(casos),i,j,k;
		int categoria, qtdpalavras;
		
		StringTokenizer token;		
			
		ArrayList<Categoria> lista = new ArrayList<Categoria>();
		
		for(i=0;i<caso;i++)
		{
			casos = in.readLine();
			categoria= Integer.parseInt(casos);
			for(j=0;j<categoria;j++)
			{
				Categoria cat = (new Spoj()).new Categoria();     //Aqui ta dando erro....
				casos = in.readLine();
				token = new StringTokenizer(casos);		
											
				cat.setNome(token.nextToken());
				qtdpalavras = Integer.parseInt(token.nextToken());
				cat.setQtdPalavras(Integer.parseInt(token.nextToken()));
				
				for(k=0;k<qtdpalavras;k++)
				{
					casos = in.readLine();
					cat.getMapa().put(casos, casos);
				}				
				lista.add(cat);
			}
			while(true)
			{
				casos = in.readLine();
				if(casos.equals(""))
					break;
				else
				{
				
				}
			}			
		}
	}
}

Esta dando erro quando eu tento instanciar minha classe interna…não sei se pode ser talvez o Map que esteja errado ou outra coisa…
Agradeço a ajuda de quem puder ajudar…
Alguem teria um material sobre Java para maratonas de programação.???

Ate mais…

Olha só,

Esse seu algoritmo está muito confuso. por exemplo casos, algumas vezes você utiliza ele como String passando para inteiro, outras vezes você utiliza ele no Stringtokenizer, mas não dá um delimitador, nao podendo assim pegar outros tokens, como você quer…afinal, o que você quer com essa classe?? o que ela faz??
E o problema, não está na instanciação da classe interna, e sim na hora que faz

qtdpalavras = Integer.parseInt(token.nextToken());

Fernando Rosa

[quote]
Olha só,

Esse seu algoritmo está muito confuso. por exemplo casos, algumas vezes você utiliza ele como String passando para inteiro, outras vezes você utiliza ele no Stringtokenizer, mas não dá um delimitador, nao podendo assim pegar outros tokens, como você quer…afinal, o que você quer com essa classe?? o que ela faz??
E o problema, não está na instanciação da classe interna, e sim na hora que faz [/quote]

Assim…to tentando resolver este problema aqui…

Entao a variavel casos eu utilizo ela varias vezes sim, contenção de variaveis…hehehe
o meu problema ta na linha

Categoria cat = (new Spoj()).new Categoria();

To usando o eclipse, e ele me lança uma excessão… ClassNotFoundException quando chega nesta linha…

O codigo que eu postei não esta completo. eu estava tentando testar as entradas e ele parava naquela linha…
Agradeço se alguem puder ajudar…

Testei e não deu problema nessa linha que tu falou, e sim na hora que estava pegando um novo token da palavra entrada na linha de comando…

Testei no eclipse também.

Estou debugando com essa entrada…

1
2
Graph 4 3
node
edge
directed
distance
Geometrical 4 2
point
convex
polygon
boring

Ele le duas linhas e ai entra no for.
na Primeira linha do for ele lança a excessão, não chega na linha – casos = in.readLine();

Não sei o q pode ser…
Qual excessão que lança qdo tenta pegar um novo token?
se puder me ajudar…não sei que erro pode ser. e se eu tentar no NetBeans será que ira fazer diferença.?
Vc teria algum codigo de classe interna…para me passar?

Olá galera preciso resolver este problema… sera que alguem pode me ajudar…

Dada uma seqüência de n números reais (considere n < 100), determinar os números que compõem a seqüência e o número de vezes que cada um deles ocorre na mesma.
Exemplo: n = 8
Seqüência: -1.7, 3.0, 0.0, 1.5, 0.0, -1.7, 2.3, -1,7
Saída: -1.7 ocorre 3 vezes
3.0 ocorre 1 vez
0.0 ocorre 2 vezes
1.5 ocorre 1 vez
2.3 ocorre 1 vez

Então,

O problema está na inicialização do Map da Classe categoria. Fiz assim e funcionou:

class Categoria {
		private Map<String, String> mapa;
		private String nome;
		private int nPalavras;

		Categoria() {
                                     mapa =  new HashMap<String, String>();

		}

		public Map<String, String> getMapa() {
			return mapa; 		}

		public String getNome() {
			return nome;
		}

		public int getQtdPalavras() {
			return nPalavras;
		}

		public void setMapa(Map<String, String> map) {
			mapa = map;
		}

		public void setNome(String nome) {
			this.nome = nome;
		}

		public void setQtdPalavras(int qtd) {
			nPalavras = qtd;
		}

	}

[quote=james.m.g]Olá galera preciso resolver este problema… sera que alguem pode me ajudar…

Dada uma seqüência de n números reais (considere n < 100), determinar os números que compõem a seqüência e o número de vezes que cada um deles ocorre na mesma.
Exemplo: n = 8
Seqüência: -1.7, 3.0, 0.0, 1.5, 0.0, -1.7, 2.3, -1,7
Saída: -1.7 ocorre 3 vezes
3.0 ocorre 1 vez
0.0 ocorre 2 vezes
1.5 ocorre 1 vez
2.3 ocorre 1 vez[/quote]

coloque o código que voce já fez pra ver onde está o problema

Fernando Generoso da Rosa

Ai obigado pela atenção mas eu ja consegui…com muito custo mas deu…
valeu…