Error while converting types

Asked

Viewed 112 times

0

I am doing a job for the college that consists of creating an immovable array based on some rules that are provided by txt. The code gives error and do not know what is occurring.

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

I need to run this string array 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)
  • The problem is not the quotation mark? Try to replace " to empty

  • What parts[contvetor] returns? No empty space there?

  • 1

    The problem seems to be the \n before 2

1 answer

0


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

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

You can also try to do this :

valor = Integer.parseInt(parts[contvetor].replaceAll("\r", "").replaceAll("\t", "").replaceAll("\n", ""));

Browser other questions tagged

You are not signed in. Login or sign up in order to post.