Switch ---- Dúvida

22 respostas
shadowjava

Galera já fiz 5 programas com do_while , while , for , if
sendo que no case não consegui.

alguem me dá uma luz aê

"ler 8 notas de um aluno, se a média for maior que 6 aprovado, senão reprovado
como fazer um exemplo desse com switch case

:wink:

22 Respostas

W

posta aew teu código pra gente dar uma olhada e ver qual erro tá rolando…
:lol:

feltraco

ler as notas com o switch ?

shadowjava

eu fiz assim mais não tem nada a ver

import java.util.Scanner;


public class exemplo_switch {

	public static void main (String args[])
	{
		
		Scanner x = new Scanner (System.in);  
		int num1, num2, num3, num4,num5, num6,total,exemplo;   
		  
		System.out.println("Digite um numero inteiro: ");   
		num1 = x.nextInt();   
		
		System.out.println("Digite um numero inteiro: ");   
		num2 = x.nextInt();   
		
		System.out.println("Digite um numero inteiro: ");   
		num3 = x.nextInt();   
		
		System.out.println("Digite um numero inteiro: ");   
		num4 = x.nextInt();   
		
		System.out.println("Digite um numero inteiro: ");   
		num5 = x.nextInt();   
		
		System.out.println("Digite um numero inteiro: ");   
		num6 = x.nextInt();   
		
		total = (num1+num2+num3+num4+num5+num6/6);
		
		
          switch( total )
          {
            case 1: System.out.println("Aluno Reprovado");
                break;
            case 2: System.out.println("Aluno Reprovado");
                break;
            case 3: System.out.println("Aluno Reprovado");
                break;
            case 4: System.out.println("Aluno Reprovado");
                break;
            case 5: System.out.println("Aluno Reprovado");
                break;
            
             case 6: System.out.println("Aluno Aprovado");
                break;
             case 7: System.out.println("Aluno Aprovado");
                break;
             case 8: System.out.println("Aluno Aprovado");
                break;
             case 9: System.out.println("Aluno Aprovado");
                break;
             case 10: System.out.println("Aluno Aprovado");
                break;
        

          }		
		
	}

}
Kassiane_Pretti
ler 8 notas de um aluno, se a média for maior que 6 aprovado, senão reprovado como fazer um exemplo desse com switch case
Scanner x = new Scanner(System.in);
int soma = 0;

//Lendo e calculando a media e de 8 notas de 1 aluno
for(int i=0; i<8; i++){
System.out.print("Digite a nota %d do aluno: ", i+1);
soma += x.nextInt();
}

//usando if
if((soma/8.0)>6) {System.out.println("Aluno aparovado");}
else{System.out.println("Aluno reprovado");}

//usando switch 

int media = soma/8; //a media será inteira pois o switch só aceita variaveis do tipo int e char 

switch (media){
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:  System.out.println("Aluno reprovado");
break;
default: System.out.println("Aluno aprovado");
break;
}

Espero ter ajudado....

shadowjava

KassiPretti vc não existe …

muito obrigado !

vc sabe pra caramba …

novamente me deu uma luz!

porfavor me passa seu google talk :wink:

Fer

Olá shadowjava!

Vc pode tentar assim:

import javax.swing.JOptionPane;

public class Contador {

	public static void main(String args[]) {
		int condicao = 0;
        Double num1, num2, num3, num4, num5, num6, total; // aqui vc pode declarar double caso a nota seja quebrada
		num1 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a primeira nota: "));

		num2 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a segunda nota: "));

		num3 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a terceira nota: "));

		num4 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a quarte nota: "));

		num5 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a quinta nota: "));

		num6 = Double.parseDouble(JOptionPane
				.showInputDialog("Digite a sexta nota: "));

		total = ((num1 + num2 + num3 + num4 + num5 + num6) / 6);

		if (total > 6) //aqui vc faz a verificao para saber se o aluno será aprovado ou não
			condicao = 1;
		else
			condicao = 2;

		switch (condicao) {
		case 1:
			System.out.println("Aluno Aprovado");
			break;
		case 2:
			System.out.println("Aluno Reprovado");
			break;
		}

	}

}

Um exercício bom para usar o switch é fazendo uma calculadora! 8)

[]'s

feltraco
*Fer*:
if (total > 6) //aqui vc faz a verificao para saber se o aluno será aprovado ou não
			condicao = 1;
		else
			condicao = 2;

		switch (condicao) {
		case 1:
			System.out.println("Aluno Aprovado");
			break;
		case 2:
			System.out.println("Aluno Reprovado");
			break;
		}

	}

pra que replicar codigo assim ??
se for soh pra dizer que usou o Switc blz...

agora quanto a fazer uma calculadora, tb aconselho...

FLwS...

shadowjava

bem bolado esse programa , porem esse lance de awt usado me confunde muito ainda …

ainda não cheguei nesta parte gráfica!

Fer
feltraco:
*Fer*:
if (total > 6) //aqui vc faz a verificao para saber se o aluno será aprovado ou não
			condicao = 1;
		else
			condicao = 2;

		switch (condicao) {
		case 1:
			System.out.println("Aluno Aprovado");
			break;
		case 2:
			System.out.println("Aluno Reprovado");
			break;
		}

	}

pra que replicar codigo assim ??
se for soh pra dizer que usou o Switc blz...

agora quanto a fazer uma calculadora, tb aconselho...

FLwS...

Replicar código?
Eu sei que tem como fazer isso só utilizando o if e o else, mas a intenção deste post é a utilização do SWITCH se vc não percebeu...

Kassiane_Pretti
*Fer*:
feltraco:
*Fer*:
if (total > 6) //aqui vc faz a verificao para saber se o aluno será aprovado ou não
			condicao = 1;
		else
			condicao = 2;

		switch (condicao) {
		case 1:
			System.out.println("Aluno Aprovado");
			break;
		case 2:
			System.out.println("Aluno Reprovado");
			break;
		}

	}

pra que replicar codigo assim ??
se for soh pra dizer que usou o Switc blz...

agora quanto a fazer uma calculadora, tb aconselho...

FLwS...

Replicar código?
Eu sei que tem como fazer isso só utilizando o if e o else, mas a intenção deste post é a utilização do SWITCH se vc não percebeu...

Pelo que eu entendi o feltraco quis dizer que vc verificou duas vezes a media, duplicando assim o codigo. Para ele vc poderia utilizar um ou outro, mas os dois fica meio repetitivo o código.... Pelo menos foi isso que eu entendi...

Fer
KassiPretti, eu entendi o que vcs estão falando.
Fer
Eu particularmente resolveria utilizando o if e o else. Mas no exemplo que vc citou, ocorre uma divisão, e nem sempre uma divisão com inteiros irá resultar em inteiros e sim em números quebrados. Haveria uma inconsistencia com o aluno que obtivesse media 6,2 por exemplo (é maior que 6) que seria reprovado ao invés de aprovado. Por isso utilizei Double e comparação com o if.
Kassiane_Pretti

Então como eu tinha falado, se ele quiser utilizar o switch a variavel ulizada no comando de seleção deveria ser do tipo int ou char, pois são apenas esses dois que ele aceita. O switch só verifica se a variavel é igual a uns dos cases e só. No caso deveria comparar se é maior ou menor coisa que ele não faz, mais um motivo para a variavel conter um numero inteiro.

int soma = 0; int media = soma/8;

Pois bem… se soma e média são variaveis do tipo int e eu coloquei 8 (int) em vez de 8.0(float); o resultado da operação soma/8 será um inteiro que será armazenado numa variavel inteira sem demais problemas com inconsistencia (pois até onde eu sei, uma divisão entre numeros inteiros resulta em um inteiro, se preciso são realizados arrendodamentos).
No caso do aluno que ficaria com 6 em vez de 6.2 representa o problema de usar o switch. Para esse exercicio onde o resultado deve ser “exato” o melhor a se fazer é usar o if/else para comparações desse tipo.

Espero que tenha entendido…

Marky.Vasconcelos
int soma = 6.2;
boolean aprovado = Math.round((soma/6)) > 6;
Fer
Então se no seu programa entrarem as notas 6, 6, 6, 6, 6, 6, 6 e 7, o resultado será 49. Divide por 8... puxa o resultado é 6,125! Caraca... a calculadora do Windows deve estar com defeito e o Bill Gates vai se aposentar...!!! 
E ainda o aluno será reprovado pelo seu programa, essa é a inconsistência que estou citando.
Kassiane_Pretti
Então se no seu programa entrarem as notas 6, 6, 6, 6, 6, 6, 6 e 7, o resultado será 49. Divide por 8... puxa o resultado é 6,125! Caraca... a calculadora do Windows deve estar com defeito e o Bill Gates vai se aposentar...!!! 
E ainda o aluno será reprovado pelo seu programa, essa é a inconsistência que estou citando.

Então, quando trabalhamos dados que apresentem casas decimais e elas forem importantes para o programa (no caso da media do aluno) utilizamos variaveis do tipo float ou double…

O que eu fiz no programa foi só para mostrar a utilização do switch, no caso de um programa real para apresentar os alunos aprovados, primeiro as variaveis seriam todas float ou double e não seria utilizado o switch e sim um if/else.

Espero que tenha entendido dessa vez --’

Fer
KassiPretti:
Então, quando trabalhamos dados que apresentem casas decimais e elas forem importantes para o programa (no caso da media do aluno) utilizamos variaveis do tipo float ou double.....

O que eu fiz no programa foi só para mostrar a utilização do switch, no caso de um programa real para apresentar os alunos aprovados, primeiro as variaveis seriam todas float ou double e não seria utilizado o switch e sim um if/else.

Espero que tenha entendido dessa vez --'

O que importa em um programa é o resultado confiável, se ele irá funcionar para o que foi estabelecido (aprovar alunos com notas maiores que 6). Vc utilizou o switch certo? Mas pra vc importa só dizer que utilizou e o resultado sem nenhuma importância!? Eu sei muito bem como funciona o switch e a funcionalidade dele fica clara no exemplo citado por mim. Ele utiliza o switch e o resultado é certo. Coisa que não ocorre no seu...

notas inseridas: 6, 6, 6, 6, 6, 6, 6 e 8 = 50/8 = 6,25
import java.util.Scanner;
public class Contador2 {
	public static void main(String args[]) {
		Scanner x = new Scanner(System.in);   
		int soma = 0, media = 0;   
		 
		for(int i=1; i<9; i++){   
		System.out.println("Digite a nota do "+ i + "º aluno: ");   
		soma += x.nextInt();   
		}   

		media = soma / 8;

		switch (media) {
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:
			System.out.println("Aluno reprovado");
			break;
		default:
			System.out.println("Aluno aprovado");
			break;
		}
	}
}
Resultado:
Aluno reprovado
notas inseridas: 6, 6, 6, 6, 6, 6, 6 e 8 = 50/8 = 6,25
import java.util.Scanner;

public class Contador2 {
	public static void main(String args[]) {
		Scanner x = new Scanner(System.in);
		int soma = 0, media = 0, op;

		for (int i = 1; i < 9; i++) {
			System.out.println("Digite a nota do " + i + "º aluno: ");
			soma += x.nextInt();
		}

		media = soma / 8;

		if (media > 6)
			op = 1;
		else
			op = 2;
		switch (op) {
		case 1:
			System.out.println("Aluno reprovado");
			break;
		case 2:
			System.out.println("Aluno aprovado");
			break;
		}
	}
}
Aluno aprovado
Isso é que importa para mim, o resultado estar correto. Esse foi o jeito que encontrei para inserir o switch. Não precisa se preocupar em explicar o que fez, ou o que eu devia fazer. Pensamos diferente, somente isso.
davidbuzatto

Olha só! A primeira briga de mulher do GUJ.
Tema: Usar o não switch?

Fer, vc está errada quando fala que a Kassi está errada quanto a divisão de números inteiros (ufa…)

Se todos os operandos forem inteiros, o resultado será inteiro sim…

Não fiquei lendo tudo, mas não precisam brigar por causa disso :smiley:

Calma meninas!

Kassiane_Pretti

Só para resaltar eu usei o switch para mostrar como o shadowjava
poderia usá-lo em seu codigo.

E eu não estou tentando te dizer o que vc deveria fazer, só estou tentado explicar o que eu fiz pois vc tinha contestado antes…

Cada um aborda o problema de formas diferentes, isso é normal :roll:

davidbuzatto

Chega agora né? Não vamos transformar o GUJ em ORKUJ né?

Fer

Ok davidbuzatto. Encerrada a transmissão… rsrs

Kassiane_Pretti

exit 8)

Criado 11 de fevereiro de 2008
Ultima resposta 12 de fev. de 2008
Respostas 22
Participantes 7