Error converting types

0

I'm doing a job for college that consists of creating an array of buildings based on some rules that are provided by txt. The code gives an error and I do not know what is happening.

A detail that when I comment the line valor = Integer.parseInt(parts[contvetor]); works normal. But the contvetor variable is declared, so I do not know what's going on.

I need to run this string array by converting to go using the values in the code and create the real estate bank board.

  try { 
  StringBuilder sb = new StringBuilder(); 
  String line = br.readLine(); 
  while(line!=null){ 
  sb.append(line); 
  sb.append(System.lineSeparator()); 
  line = br.readLine(); 
  //System.out.println(line); 
  } 

  String everything = sb.toString(); 
  //System.out.println(everything);
  String[] parts = everything.split(";");
  //System.out.println(parts[8]);
  valor = Integer.parseInt(parts[0]);
  valorinicial = Integer.parseInt(parts[0]); //variavel valor recebe o inteiro convertido do txt
//  int[] idades = new int[valor]; //define o tamnho do vetor
  ArrayList<Imovel> vetor = new ArrayList<Imovel>();  
  for(int cont=0;cont<valorinicial;cont++){ //estrutura de repeticao que inicia o tabuleiro
      if(cont==0){
          ClubeSocial start = new ClubeSocial(); //clubesocial eh a classe start
          start.setstart();         //isso faz com que os 4 primeiros valores lidos no arquivos ja tenham sido utilizados parts[0-3]
          vetor.add(start);
          contvetor = 4;
          valor = Integer.parseInt(parts[contvetor]);
      }
      for(int cont2=0;cont2<6;cont2++){
            if(cont2==0 || cont2==1){ //nao preciso da id e nao preciso da casa, porque o for ja faz isso, entao desconsidero as 2
              cont2++;
              contvetor++;
          }
          //abaixo olhamos valor casa para ver se cai 2 ou 3 [passe a vez ou add imovel]
          if(valor==2){ //adiciona um passe a vez e faz cont2 ficar maior que 5 para que termine essa linha de instrucao e comece a prox
              passeavez pass = new passeavez();
              pass.setpass();
              vetor.add(pass);
              cont2 = 6;
              contvetor++;
          }
          else{ //no caso o valor é 3 que é pra add imovel
              cont2++; //incrementa o valor do contador para pegar o 4ª valor dos 6 da linha
              if(valor == 1){
                  Residencia residencia = new Residencia();
                  cont2++;
                  contvetor++; //incrementa o valor do contador para pegar o 5ª valor dos 6 da linha
                  residencia.setPreco(valor);
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 6ª valor dos 6 da linha
                  residencia.setAluguel(valor);
                  vetor.add(residencia);
                  cont2 = 6;
              }
              else if(valor == 2){
                  Comercio comercio = new Comercio();
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 5ª valor dos 6 da linha
                  comercio.setPreco(valor);
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 6ª valor dos 6 da linha
                  comercio.setAluguel(valor);
                  vetor.add(comercio);
                  cont2 = 6;
              }
              else if(valor == 3){
                  Industria industria = new Industria();
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 5ª valor dos 6 da linha
                  industria.setPreco(valor);
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 6ª valor dos 6 da linha
                  industria.setAluguel(valor);
                  vetor.add(industria);
                  cont2 = 6;
              }
              else if(valor == 4){
                  Hotel hotel = new Hotel();
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 5ª valor dos 6 da linha
                  hotel.setPreco(valor);
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 6ª valor dos 6 da linha
                  hotel.setAluguel(valor);
                  vetor.add(hotel);
                  cont2 = 6;
              }
              else if(valor == 5){
                  Hospital hospital = new Hospital();
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 5ª valor dos 6 da linha
                  hospital.setPreco(valor);
                  cont2++;
                  contvetor++;//incrementa o valor do contador para pegar o 6ª valor dos 6 da linha
                  hospital.setAluguel(valor);
                  vetor.add(hospital);
                  cont2 = 6;
              }
          }
      }
  }

  System.out.println("pqp" + valor);

  } catch (IOException ioe) {
        ioe.printStackTrace();
    }
  finally{ 
  //br.close(); 
  } 


  } 

  } 

Error below:

Exception in thread "main" java.lang.NumberFormatException: For input string: "
2"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at jogo.main.main(main.java:45)
    
asked by anonymous 07.06.2017 / 02:54

1 answer

0

The problem is that there is a line break and when trying to convert to Integer with parse the error happens, one solution would be to add the .trim () to remove this and work normally, thus:

valor = Integer.parseInt(parts[contvetor].trim());

You can also try this:

valor = Integer.parseInt(parts[contvetor].replaceAll("\r", "").replaceAll("\t", "").replaceAll("\n", ""));
    
07.06.2017 / 03:11