Duvida basica no Scanner

Ola como faço pra receber o valor usando o Scanner, com OO nao consigo fazer, sei
que é uma coisa bem basica mas alguem me da uma ajuda por favor…


public class Soma {

	private int a ;
	private int b;
	private int soma;
	
	
	public Soma(){
		
	}
	
	public void Soma(int pA, int pB, int pSoma){
		setA(pA);
		setB(pB);
		setSoma(pSoma);
	}

	public int getA() {
		return a;
	}

	public void setA(int a) {
		this.a = a;
	}

	public int getB() {
		return b;
	}

	public void setB(int b) {
		this.b = b;
	}

	public int getSoma() {
		return soma;
	}

	public void setSoma(int soma) {
		this.soma = soma;
	}
	
	public void Somando(){
		
		soma = a + b;
	}
	
	public void Imprimir(){
		
		System.out.println("A soma é: "+ soma);
	}
	
}

[code]import java.util.*;
public class Execucao {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub

	Scanner sc = new Scanner(System.in);
	
	
	Soma objSoma = new Soma();
	
	
	System.out.println("Informe o valor de A: ");
	objSoma.a = sc.nextInt();  //a variavel "a"  me retorna um erro " the field Soma.a is not visible "

	System.out.println("Informe o valor de B: ");
	objSoma.b = sc.nextInt();  //a variavel  "b" me retorna um erro " the field Soma.a is not visible "
	
	objSoma.Somando();
	objSoma.Imprimir();
}

}
[/code]

desde já agradeço!

Use seu método setter:

[code]
Scanner sc = new Scanner(System.in);

Soma objSoma = new Soma();

System.out.println("Informe o valor de A: ");
objSoma.setA(sc.nextInt());

System.out.println("Informe o valor de B: ");
objSoma.setB(sc.nextInt());

objSoma.Somando();
objSoma.Imprimir();[/code]

Use:

objSoma.setA = sc.nextInt(); objSoma.setB = sc.nextInt();

ou use o construtor que você colocou.

[code]int primeiroNum, segundoNum;

System.out.println("Informe o valor de A: ");
primeiroNum = sc.nextInt();
System.out.println("Informe o valor de B: ");
segundoNum = sc.nextInt();

Soma objSoma = new Soma(primeiroNum, segundoNum); //Retire o 3º parâmetro[/code]

Não esqueça de tratar as exceções.

Flw

Pow demorei 4 segundos a mais que o Vini para resonder. :lol:

ViniGodoy,
muito obrigado deu certo =)
coisinha basica e eu sem conseguir ein? :oops:

Frantic Avenger,
cara valeu por ajudar, mas nao consegui do jeito que tu falou nao.
e do jeito do ViniGodoy ficou mais facil.
Abraaxx

Outra coisa. Fazer a soma é um serviço da classe. Então, não faz sentido um método chamado “setSoma”. O usuário só deve se preocupar em setar a e b, pois a classe é quem sabe como somar. Nem faz sentido o método somando, pois quem tem que fazer a soma é o getSoma.

Também não deveria ser uma tarefa da soma imprimir os dados. Via de regra, classes de negócio nunca solicitam dados, nem imprimem coisas na tela. Deixamos isso para as classes de visão (no caso o seu main). Assim fica mais fácil caso você queira transformar essa aplicação de soma numa aplicação swing, por exemplo.

Veja:

[code]public class Soma {
private int a = 0;
private int b = 0;

public Soma(){		
}

public void Soma(int pA, int pB){
	setA(pA);
	setB(pB);
}

public int getA() {
	return a;
}

public void setA(int a) {
	this.a = a;
}

public int getB() {
	return b;
}

public void setB(int b) {
	this.b = b;
}

public int getSoma() {
	return a + b;
}

}[/code]

O main ficaria assim:

[code]
import java.util.*;
public class Execucao {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

	Soma objSoma = new Soma();
			
	System.out.println("Informe o valor de A: ");
	objSoma.setA(sc.nextInt()); 

	System.out.println("Informe o valor de B: ");
	objSoma.setB(sc.nextInt()); 

	System.out.println("A soma é: "+ objSoma.getSoma());
}

}[/code]

Tem razão acabei copiando seu código e aí escrevi errado.

O certo seria:

objSoma.setA(sc.nextInt()); objSoma.setB(sc.nextInt());
Como o Vine falou e não

objSoma.setA = sc.nextInt(); objSoma.setB = sc.nextInt();
Como eu escrevi.

Desculpa aí. Flw

Ah entendido, valeu pela dica :wink:

Olá BinhoAraujo, acredito que o ViniGodoy já tenha matado a charada mas gostaria de reforças algums pontos!!!

  objSoma.a = sc.nextInt();  //a variavel "a"  me retorna um erro " the field Soma.a is not visible "   

no momento que você tem um objeto da classe soma chamado objSoma, a partir do operador (.) você terá acesso somente aos campos públicos
portanto no momento que você tenta acessar a variável a ( objSoma.a ) é gerado essa excessão ( the field Soma.a is not visible ). por esse motívo que você utiliza o encapsulamento, para ter acesso aos campos private. e sendo assim é necessário usar o setA().
OK?

Frantic Avenger, tudo bem =)

Itopaulo,
Ok, Thanks… xD

Aproveitando o mesmo Topico,
pq estou recebendo esse erro?

Informe o seu Peso:
80
Informe a sua Altura:
1.76
[color=red]Exception in thread “main”[/color] [color=darkblue]java.util.InputMismatchException[/color]
[color=red]at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Execucao.main/color

segue o codigo:

[code]public class Imc {

double massa = 0;
double altura = 0;

public Imc(){
	
}

public Imc(double pMassa, double pAltura){
	setMassa(pMassa);
	setAltura(pAltura);
}

public void setMassa(double massa){
	this.massa = massa;
}

public void setAltura(double altura){
	this.altura = altura;
}

public double getMassa(){
	return massa;
}

public double getAltura(){
	return altura;
}

public double getIMC(){
	return (massa /(altura*altura));

}

}
[/code]

[code]import java.util.Scanner;
public class Execucao {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub

	Scanner sc = new Scanner(System.in);
	
	Imc objImc = new Imc();
	
	System.out.println("Informe o seu Peso: ");
	objImc.setMassa(sc.nextDouble());
	
	System.out.println("Informe a sua Altura: ");
	objImc.setAltura(sc.nextDouble());
	
	System.out.println("Seu IMC é: "+ objImc.getIMC());
	
}

}
[/code]