Sou um novato com Java,
queria cria um sistema básico que que dividise uma variavel por outra, compilando deu certo, mas na hora de executa houve um problema. Esse é o comando que eu escrevi:
publicclassTeste{publicstaticvoidmain(Stringargs[]){inta=2012;intb;intc=4;b=a%4;switch(b){case0:System.out.println("e ano bissexto");break;default:System.out.println("naum e ano bissexto");break;}}}
Outra duvida que tenho é em relação ao Scanner do Java, tenho a versão 1.6.0_5, e não consigo utilizar esta função. Alguem poderia me explicar como fazer a entrada de dados?
Boa tarde, compilei seu programa, executei, e funcionou perfeitamente dentro de suas limitações (exceções não tratadas…).
Quanto a utilização do scanner no jdk 1.6-5 ainda não testei, mas fiz algumas alterações e aqui funcionou corretamente.
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(Stringargs[]){Scannerscan=newScanner(System.in);java.io.PrintStreams=System.out;s.print("Informe -1 para sair\n\n");while(true){s.print("Informe o ano:\t");intano=scan.nextInt();if(ano==-1)System.exit(0);if(ano%4==0)s.println("e ano bissexto\n\n");elses.println("naum e ano bissexto\n\n");}}}
A
adsfg123
Mutio Obrigado, funcionou, estudarei este código.
O que é o /t? e o /n?
Desculpe me com relação as duvidas, é que eu comecei a uns tres dias.
M
Markissimo
\t - tabulação
\n - pula linha
A
andredecotia
Alessandro09:
Boa tarde, compilei seu programa, executei, e funcionou perfeitamente dentro de suas limitações (exceções não tratadas…).
Quanto a utilização do scanner no jdk 1.6-5 ainda não testei, mas fiz algumas alterações e aqui funcionou corretamente.
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(Stringargs[]){Scannerscan=newScanner(System.in);java.io.PrintStreams=System.out;s.print("Informe -1 para sair\n\n");while(true){s.print("Informe o ano:\t");intano=scan.nextInt();if(ano==-1)System.exit(0);if(ano%4==0)s.println("e ano bissexto\n\n");elses.println("naum e ano bissexto\n\n");}}}
Olá, tudo bem?
Desculpe minha pergunta, fiz algumas pesquisas mas não conseguí encontrar um porquê para utilizar System.exit(0); em ambiente real de trabalho pois um programa pelo que sei costuma ser um work flow no sentido de fluxo de serviços, e se invoco este método ele mata tudo que tem execução, não? Matando todo o fluxo de seriços…
A
andredecotia
Dê uma olhada no código, apenas dei uma mudada de lógica para tentar te ajudar:
Fiquem a vontade para sugerirem mudanças no meu código...
Abraços,
importjava.util.InputMismatchException;/** * *//** * @author André AS * */publicclassDescobrindoAnoBissexto{/** * */publicDescobrindoAnoBissexto(){// TODO Auto-generated constructor stub}/** * @param args */publicstaticvoidmain(Stringargs[]){java.util.ScannercapturaBytes=newjava.util.Scanner(System.in);java.io.PrintStreamps=System.out;ps.println("Digite uma ano pressione Enter para inicializar o programa: ");try{iteracaoBytesDigitados:while(capturaBytes.hasNext()){intanoRecebido=0;anoRecebido=capturaBytes.nextInt();if(anoRecebido%4==0){ps.println("É ano Bissexto.");ps.print("Deseja continuar? Digite sim ou não e pressione enter.");if(capturaBytes.next().equals("sim")){main(null);}else{ps.print("O programa não está mais em execução.");breakiteracaoBytesDigitados;}}else{ps.println("Não é ano Bissexto.");ps.print("Deseja continuar? Digite sim ou não e pressione enter.");if(capturaBytes.next().equals("sim")){main(null);}else{ps.print("O programa não está mais em execução.");breakiteracaoBytesDigitados;}}}}catch(InputMismatchExceptionime){System.out.println("Não foi digitado um número! Erro: "+ime.getMessage());;}}}
ViniGodoy
O cálculo do ano bissexto também está errado. O ano não é bissexto se for divisível por 100, mas não por 400.
A fórmula correta de cálculo é:
public bool eBissexto(int ano) {
if (ano % 400 == 0)
return true;
if (ano % 100 == 0)
return false;
if (ano % 4 == 0)
return true;
return false;
}
Exemplos disso são os anos de 1900 e 2100, que não são bissextos, enquanto o ano de 2000 foi.
A
andredecotia
ViniGodoy:
O cálculo do ano bissexto também está errado. O ano não é bissexto se for divisível por 100, mas não por 400.
A fórmula correta de cálculo é:
public bool eBissexto(int ano) {
if (ano % 400 == 0)
return true;
if (ano % 100 == 0)
return false;
if (ano % 4 == 0)
return true;
return false;
}
Exemplos disso são os anos de 1900 e 2100, que não são bissextos, enquanto o ano de 2000 foi.
Boa Viny,
obrigado.
André AS
A
andredecotia
importjava.util.InputMismatchException;/** * *//** * @author André AS * */publicclassDescobrindoAnoBissexto{/** * */publicDescobrindoAnoBissexto(){// TODO Auto-generated constructor stub}/** * @param args */publicstaticvoidmain(Stringargs[]){java.util.ScannercapturaBytes=newjava.util.Scanner(System.in);java.io.PrintStreamps=System.out;ps.println("Digite uma ano pressione Enter para inicializar o programa: ");try{iteracaoBytesDigitados:while(capturaBytes.hasNext()){intanoRecebido=0;anoRecebido=capturaBytes.nextInt();if(isBissexto(anoRecebido)){ps.println("É ano Bissexto.");ps.print("Deseja continuar? Digite sim ou não e pressione enter.");if(capturaBytes.next().equals("sim")){main(null);}else{ps.print("O programa não está mais em execução.");breakiteracaoBytesDigitados;}}else{ps.println("Não é ano Bissexto.");ps.print("Deseja continuar? Digite sim ou não e pressione enter.");if(capturaBytes.next().equals("sim")){main(null);}else{ps.print("O programa não está mais em execução.");breakiteracaoBytesDigitados;}}}}catch(InputMismatchExceptionime){System.out.println("Não foi digitado um número! Erro: "+ime.getMessage());;}}publicstaticbooleanisBissexto(intano){if(ano%400==0)returntrue;if(ano%100==0)returnfalse;if(ano%4==0)returntrue;returnfalse;}}