Duvida no System.out.printf

Pessoal, sei que o método: System.out.print , ele irá imprimir a uma linha com e deixar o cursor no final desta, e o método System.out.printnl, irá quebrar a linha ou seja, o cursor, irá decer uma linha. Mas pessoal, estudo pelo livro do deitel , ele utiliza o seguinte numa classe para somar dois inteiros:

import java.ultil.Scanner;

public class Soma
{
publica static void main(System[] args)
{
Scanner input = new Scanner( System.in );

  int numero1;
  int numero2;
  int soma;

 System.out.print("Escreva o primerio numero: ");
 numero1 = input.nextInt();

 System.out.print("Escreva o segundo numero: ");
 numero2 = input.nextInt();

 soma = numero1 + numero2;

System.out.printf(" A soma é %d/n", soma);

}
}

O que não estou entendendo é porque ele usa o %d… É alguma indicativa que o inteiro que foi atribuido na variável soma irá entrar ali, e depois ele coloca a virgula e colocando o nome da varialvel, dizendo que o inteiro da quela variável irá entar no %d?

Boa tarde Luiz,

É isso sim.

Quando você usa

System.out.printf("Oi aqui entrará um inteiro: %d",10);

Você tá falando que o %d será substituído por 10. Esse 10 poderia estar armazenado em uma variável por exemplo.

Quando ao invés do %d você usa o %s por exemplo, significa que você irá substituir por uma string.

Para mais detalhes acesse http://java.sun.com/developer/technicalArticles/Programming/sprintf/

Abraço

Bem primeiramente vamos ao teu codigo que não roda nada do jeito que ta. correções:

import java.ultil.Scanner;

não é ultil e sim util

publica static void main(System[] args)

bem isso ai ta tenso erros: publica para public e no nesse caso: System para String, correto pra você seria assim:

public static void main(String[]args)

bem continuando.

nesse seu codigo você está usando o Scanner pra obter os dados via linha de comando:

System.out.print("Escreva o primerio numero: "); numero1 = input.nextInt();

e depois que você tem todos dados coletados nas variaveis:

int numero1; int numero2; int soma;

você usa a outra variavel que vai receber a soma das variaveis numero1 e numero2.

soma = numero1 + numero2;

como você pode ver você está ultilizando o tipo printf
oque o %d faz é simplemente mostrar onde a variável soma será mostrada.
acredito que o /n que você esta mostrando ai seria \n não? quebra de linha?.
isso: System.out.printf("A Soma tem como resultado: %d", soma);
é o mesmo que isso:

System.out.println("A Soma tem como resultado: "+soma);

pelo menos em termos de saida.
bom espero que te ajude.

Nem havia me atentado a esses erros,

Mas certamente com o tempo eles deixarão de existir.

Força querido Luiz e boa sorte.

[quote]Nem havia me atentado a esses erros,

Mas certamente com o tempo eles deixarão de existir.

Força querido Luiz e boa sorte. [/quote]

tempo…remédio de quase tudo. ^^
por favor desculpe se fui “grosseiro” com a minha resposta não queria passar isso , estava com as melhores intenções. ^^

[quote=JoatanGuj][quote]Nem havia me atentado a esses erros,

Mas certamente com o tempo eles deixarão de existir.

Força querido Luiz e boa sorte. [/quote]

tempo…remédio de quase tudo. ^^
por favor desculpe se fui “grosseiro” com a minha resposta não queria passar isso , estava com as melhores intenções. ^^[/quote]

Bom nem revisei meu codigo, fiz aqui só para saber mesmo a utilização do printf, se eu tivese revisado uma coisa que nao fiz, concerteza nao averia esses erros.

[quote=LuizRomero][quote=JoatanGuj][quote]Nem havia me atentado a esses erros,

Mas certamente com o tempo eles deixarão de existir.

Força querido Luiz e boa sorte. [/quote]

tempo…remédio de quase tudo. ^^
por favor desculpe se fui “grosseiro” com a minha resposta não queria passar isso , estava com as melhores intenções. ^^[/quote]

Bom nem revisei meu codigo, fiz aqui só para saber mesmo a utilização do printf, se eu tivese revisado uma coisa que nao fiz, concerteza nao averia esses erros.[/quote]

Entendi :smiley:

Eu estou com um problema no mesmo programa. So q no meu caso, o printf nao funciona de jeito nenhum. Esse codigo eu copiei de um livro.

Aparece essa mensagem de erro:

[i]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, int)

at Adittion.main(Adittion.java:25)[/i]

import java.util.Scanner;

public class Adittion
{

public static void main (String args[])
{
	//create Scanner to obtain input from command window 
	Scanner input = new Scanner (System.in);
	
	int number1;
	int number2;
	int sum;
	
	System.out.print("Enter first integer: ");
	number1 = input.nextInt();
	
	System.out.print("Enter second integer: ");
	number2 = input.nextInt();
	
	sum = number1 + number2;
	
	System.out.printf("Sum is %d\n",sum);
}

}

JotaErre , antes de tudo dê uma lida nesse tópico: http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor
Sobre seu código, não vi problema algum e rodou sem que eu efetuasse qualquer alteração.