Ciao ho un problema con la classe Stringtokenizer; devo costruire una classe Blocchi che pone uno sull'altro
dei blocchi cubici della stessa dimensione
codice:
class Torri{
String nome;
int blocchi;
/**- un costruttore che costruisce una torre di cui viene specificato il nome e
il numero di blocchi.
- un costruttore che costruisce una torre di cui viene specificato il nome e non contiene blocchi.
*/
Torri(String nome,int numblocchi){
this.nome=nome;
this.blocchi=numblocchi;
}
Torri(String nome){
this(nome,0);
}
/**aggiungi(n)
Aggiunge alla torre n blocchi*/
public int aggiungi(int nblocchi){
blocchi+=nblocchi;
return blocchi;
}
/**togli(n)
Toglie dalla torre n blocchi.
Se la torre ha meno di n blocchi, vengono tolti tutti i blocchi.*/
public void togli(int nblocchi){
blocchi-=nblocchi;
if(blocchi<nblocchi){
blocchi=0;
}else
blocchi-=nblocchi;
}
/**somma(t)
Restituisce la torre ottenuta sommando alla torre che esegue il metodo la torre t
specificata dall'argomento.*/
public int somma(Torri t){
int somma=0;
somma+=blocchi+t.blocchi;
return somma;
}
/**toString()
Restituisce una stringa della forma
"nome_torre: numero_blocchi"
Ad esempio, se la torre ha nome "alfa" e contiene 5 blocchi, restituisce la stringa
"alfa: 5"
*/
public String toString(){
String s="";
s+=nome+": "+blocchi;
return s;
}
}
Il problema è da main:devo leggere da standard input una sequenza
di linee. Ciascuna linea puo' contenere uno o piu' elementi separati da uno spazio.Le operazioni associate all'input sono le seguenti.
1) La linea di input ha la forma
N nome n
Viene costruita una nuova torre avente il nome specificato e composta da n blocchi
(si assume n >= 0).
Ad esempio, se la linea e'
N alfa 5
dovra' essere costruita una nuova torre di nome "alfa" avente 5 blocchi.
2) La linea di input ha la forma
A n
Vengono aggiunti all'ultima torre creata al punto 1 n blocchi
(usare metodo aggiungi).
Ad esempio,
A 3
significa aggiungere 3 blocchi alla torre.
codice:
import java.util.*;
class ProvaBlocchi{
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
String y=sc.nextLine();
StringTokenizer st=new StringTokenizer(y," ");
while(st.hasMoreTokens()){
String s=st.nextToken();
String i=st.nextToken();
int num=Integer.valueOf(st.nextToken());
Torri t=new Torri(i,num);
int somm=0;
if(s.equals("A")){
int num1=Integer.valueOf(st.nextToken());
int q=t.aggiungi(num1);
Torri t1=new Torri(i,q);
somm+=t.somma(t1);
System.out.println(somm);
}
y=sc.nextLine();
}
}
}
Il problema è dal main;infatti il programma mi compila tutto correttamente ma non mi stampa niente...perchè?