Mike Phelipe Rosa Mike Phelipe Rosa - 18 days ago 5
Java Question

Cannot be resolved to a variable. Java

In the code I below have created the class "Pessoas" (part 1)
But in the part 2 when I enter "nome" and "idade", the following appears:


idade cannot be resolved to a variable AppPessoas.java

nome cannot be resolved to a variable AppPessoas.java


Part 1:

package br.mike;
public class Pessoas {

public String nome;
public int idade;

public Pessoas(){};

public Pessoas(String nome, int idade){
this.nome = nome;
this.idade = idade;
}

public String getNome(){
return nome;
}

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

public int getIdade(){
return idade;
}

public void setIdade(int idade){
this.idade = idade;
}
}



Part 2:

package br.mike;
import java.io.PrintStream;
import java.util.Scanner;

public class AppPessoas{

public static void main(String[] args){
Scanner teclado = new Scanner(System.in);
System.out.println("Qantidade de pessoas: " );
int numPessoas = Integer.parseInt(teclade.nextLine());
Pessoas[] listaPessoas = new Pessoas[numPessoas];

for(int i = 0; i < listaPessoas.length; i++){
System.out.println("Nome da pessoa " + (i+1));
nome = teclado.nextLine();
System.out.println("Idade da pessoa " + (i+1));
idade = Integer.parseInt(teclado.nextLine());
listaPessoas[i] = new Pessoas(nome, idade);
}
teclado.close();
}
}

Answer

You just have to declare the variables. So change these lines:

nome = teclado.nextLine();
idade = Integer.parseInt(teclado.nextLine());

To these lines:

String nome = teclado.nextLine();
int idade = Integer.parseInt(teclado.nextLine());

The fields nome and idade might exist in the Pessoas class but they do not exist in the AppPessoas class. So the AppPessoas and the main method do not know what these variables are. If you want to store the name and age of a person then you Either have to create two new variables or store them as soon as they are inserted. For example:

listaPessoas[i] = new Pessoas(teclado.nextLine(), Integer.parseInt(teclado.nextLine()));

A few other notes on your code:

  1. You can use teclado.next(); instead of teclado.nextLine(); when you want to get the next token from the Scanner.
  2. You can use teclado.nextInt(); instead of Integer.parseInt(teclado.nextLine()));
  3. You do not have to add ; at the end of this constructor: public Pessoas(){};
Comments