Duvida de Iniciante

8 respostas
A

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:

public class Teste {
public static void main(String args[]) {
	int a = 2012;
	int b;
	int c = 4;
	
	b = a % 4;
	
	switch (b) {
		case 0:
			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?

Muito obrigado pela Atenção,
Adsfg123

8 Respostas

A

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.

import java.util.Scanner;

public class Teste {
	public static void main(String args[]) {

		Scanner scan = new Scanner(System.in);
		java.io.PrintStream s = System.out;
		
		s.print("Informe -1 para sair\n\n");

		while (true) {
			s.print("Informe o ano:\t");
			int ano = scan.nextInt();
			if(ano == -1)System.exit(0);

			if (ano % 4 == 0)
				s.println("e ano bissexto\n\n");
			else
				s.println("naum e ano bissexto\n\n");
		}
        }
}
A

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

\t - tabulação
\n - pula linha

A

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.

import java.util.Scanner;

public class Teste {
	public static void main(String args[]) {

		Scanner scan = new Scanner(System.in);
		java.io.PrintStream s = System.out;
		
		s.print("Informe -1 para sair\n\n");

		while (true) {
			s.print("Informe o ano:\t");
			int ano = scan.nextInt();
			if(ano == -1)System.exit(0);

			if (ano % 4 == 0)
				s.println("e ano bissexto\n\n");
			else
				s.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

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,
import java.util.InputMismatchException;

/**
 * 
 */

/**
 * @author André AS
 * 
 */
public class DescobrindoAnoBissexto {

	/**
	 * 
	 */
	public DescobrindoAnoBissexto() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String args[]) {
		java.util.Scanner capturaBytes = new java.util.Scanner(System.in);
		java.io.PrintStream ps = System.out;

		ps.println("Digite uma ano pressione Enter para inicializar o programa: ");

		try {
			iteracaoBytesDigitados: while (capturaBytes.hasNext()) {
				int anoRecebido = 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.");
						break iteracaoBytesDigitados;
					}

				} 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.");
						break iteracaoBytesDigitados;
					}
				}

			}
		} catch (InputMismatchException ime) {
			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

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
import java.util.InputMismatchException;

/**
 * 
 */

/**
 * @author André AS
 * 
 */
public class DescobrindoAnoBissexto {

	/**
	 * 
	 */
	public DescobrindoAnoBissexto() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String args[]) {
		java.util.Scanner capturaBytes = new java.util.Scanner(System.in);
		java.io.PrintStream ps = System.out;

		ps.println("Digite uma ano pressione Enter para inicializar o programa: ");

		try {
			iteracaoBytesDigitados: while (capturaBytes.hasNext()) {
				int anoRecebido = 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.");
						break iteracaoBytesDigitados;
					}

				} 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.");
						break iteracaoBytesDigitados;
					}
				}

			}
		} catch (InputMismatchException ime) {
			System.out.println("Não foi digitado um número! Erro: "
					+ ime.getMessage());
			;
		}
	}
	
	public static boolean isBissexto(int ano) {  
		  if (ano % 400 == 0)  
		     return true;  
		  if (ano % 100 == 0)  
		      return false;  
		  if (ano % 4 == 0)  
		      return true;  
		  return false;  
		}  
}
Criado 13 de fevereiro de 2011
Ultima resposta 13 de fev. de 2011
Respostas 8
Participantes 5