Calculo de Media Ponderada

Seguinte, preciso fazer um programa que leia o codigo de um aluno e suas 3 notas, depois calcule a media ponderada dele(sendo que a maior nota tem peso 4 e as outras duas terão peso 3, ai final, preciso mostrar o codigo que o aluno digitou, as suas 3 notas, a media ponderada dele e uma mensagem APROVADO se a media for igual ou maior que 5 e caso contrario exiba REPROVADO.

tenho isso até agora:

[code] import java.util.Scanner;

public class NotaMediaPonderada {

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

	double media;
	double notaMaior = 0;
	double somaMenor = 0;
	
	Scanner teclado = new Scanner(System.in);
	System.out.println("Digite o código do aluno");
	double cod = teclado.nextDouble();
	System.out.println("Digite a primeira nota");
	double nota1 = teclado.nextDouble();
	System.out.println("Digite a segunda nota");
	double nota2 = teclado.nextDouble();
	System.out.println("Digite a terceira nota");
	double nota3 = teclado.nextDouble();
	
	
	if (nota1 > nota2 && nota1 > nota3){
		nota1 = notaMaior;
		somaMenor = nota2+ nota3;

	}else if (nota2 > nota1 && nota2 > nota3){
		nota2 = notaMaior;
		nota2 = nota2;
		somaMenor = nota1+nota3;
	
	}else if (nota3 > nota1 && nota3 > nota2){
		nota3 = notaMaior;
		nota3 = nota3;
		somaMenor = nota1+nota2;

	}
	
	media=((notaMaior*0.6)+(somaMenor*0.4));
	
	if ( media >= 5){
		
		System.out.println("APROVADO");
	} else {
		
		System.out.println("REPROVADO");
	}
	System.out.println("a primeira nota é "+nota1);
	System.out.println("a segunda nota é "+nota2);
	System.out.println("a terceira nota é "+nota3);
	System.out.println("a média é: "+media);

}
}

[/code]

desde já agradeço a quem ajudar.

O que tu queres é exactamente o contrário. Queres que a notaMaior seja a nota1 e não que a nota1 seja a notaMaior (que será 0 pelo que atribuíste acima)

		if (nota1 > nota2 && nota1 > nota3){
			notaMaior = nota1;

O mesmo problema de acima, e ainda mais, para que aquela última linha? Atribuir um valor a ele próprio como é óbvio não vai mudar nada.

Se reparares bem não é isto que diz o teu enunciado.

onde estão declarados os pesos?
Por que 0.6 e 0.4?
Da onde veio esses valores?
São padrão?
Não poderiam declarados com atributos?
Poderiam ser passados via console feito as notas ou declarado e inicializado como final “constante”

media=((notaMaior*0.6)+(somaMenor*0.4)); 

MP = (nota1 x peso1) + (nota2 x peso2) / (peso1 +peso2)

[quote=pmlm][quote=snynder]

		if (nota1 > nota2 && nota1 > nota3){
			nota1 = notaMaior;

[/quote]
O que tu queres é exactamente o contrário. Queres que a notaMaior seja a nota1 e não que a nota1 seja a notaMaior (que será 0 pelo que atribuíste acima)

		if (nota1 > nota2 && nota1 > nota3){
			notaMaior = nota1;

O mesmo problema de acima, e ainda mais, para que aquela última linha? Atribuir um valor a ele próprio como é óbvio não vai mudar nada.

[quote=snynder]

		media=((notaMaior*0.6)+(somaMenor*0.4));

[/quote][quote] estou com essa dificuldade, pode me ajudar?[/quote]
Se reparares bem não é isto que diz o teu enunciado.

	[/quote]

OBS: também estou com um problema se digito todas notas iguais ele da 0 no resultado

meu código está assim:

[code] import java.util.Scanner;

public class NotaMediaPonderada {

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

	double media;
	double notaMaior = 0;
	double somaMenor = 0;
	
	Scanner teclado = new Scanner(System.in);
	System.out.println("Digite o código do aluno");
	int cod = teclado.nextInt();
	System.out.println("Digite a primeira nota");
	double nota1 = teclado.nextDouble();
	System.out.println("Digite a segunda nota");
	double nota2 = teclado.nextDouble();
	System.out.println("Digite a terceira nota");
	double nota3 = teclado.nextDouble();
	
	
	if (nota1 > nota2 && nota1 > nota3){
		notaMaior = nota1;
		somaMenor = nota2+ nota3;

	}else if (nota2 > nota1 && nota2 > nota3){
		notaMaior = nota2;
		somaMenor = nota1+nota3;
	
	}else if (nota3 > nota1 && nota3 > nota2){
		notaMaior = nota3;
		somaMenor = nota1+nota2;

	}
	
	

	media= ((notaMaior*0.4) + (somaMenor*0.6));
	
	System.out.println("A média do aluno: |"+cod+"|"+ " é: "+media);
	
	if ( media >= 5){
		
		System.out.println("APROVADO");
	} else {
		
		System.out.println("REPROVADO");
	}

}
}
[/code]

[quote=Alexsandro Lopes]onde estão declarados os pesos?
Por que 0.6 e 0.4?
Da onde veio esses valores?
São padrão?
Não poderiam declarados com atributos?
Poderiam ser passados via console feito as notas ou declarado e inicializado como final “constante”

[quote] 0.6 e 0.4 são os pesos para as notas 0.4 é o peso da maiorNota e o 0.6 é a soma dos pesos das notas menores.

media=((notaMaior*0.6)+(somaMenor*0.4)); 

MP = (nota1 x peso1) + (nota2 x peso2) / (peso1 +peso2)[/quote]

É só pensares um pouco. O maior número é o que é maior ou igual aos outros dois.

[quote=snynder]0.6 e 0.4 são os pesos para as notas 0.4 é o peso da maiorNota e o 0.6 é a soma dos pesos das notas menores.
[/quote]

Podes somar as notas menores mas não o peso, o peso mantém-se

5x + 7x = 12x e não 12(2x)

galera, cheguei a esse código, e que pelo que testei aqui está funcionando, já testei na calculadora e a principio está ok, mas queria saber se alguém tem alguma consideração a fazer, alguma melhoria ou questionamento.

[code] ppackage sintaxe;
import java.util.Scanner;

public class NotaMediaPonderada {

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


	double igual = 0, media, notaMaior = 0, notaMenor1 = 0, notaMenor2 = 0;
	
	Scanner teclado = new Scanner(System.in);
	System.out.println("Digite o código do aluno");
	int cod = teclado.nextInt();
	System.out.println("Digite a primeira nota");
	double nota1 = teclado.nextDouble();
	System.out.println("Digite a segunda nota");
	double nota2 = teclado.nextDouble();
	System.out.println("Digite a terceira nota");
	double nota3 = teclado.nextDouble();
	
	
	if (nota1 > nota2 && nota1 > nota3){
		notaMaior = nota1;
		notaMenor1 = nota2;
		notaMenor2 = nota3;


	}else if (nota2 > nota1 && nota2 > nota3){
		notaMaior = nota2;
		notaMenor1 = nota1;
		notaMenor2 = nota3;

		
	
	}else if (nota3 > nota1 && nota3 > nota2){
		notaMaior = nota3;
		notaMenor1 = nota1;
		notaMenor2 = nota2;

	}
	
	if (nota1 == nota2 && nota1 == nota3){
		igual = nota1;
		
		System.out.println("A média do aluno:|"+cod+"|"+ " é: "+igual);
		
		if ( igual >= 5){
			
			System.out.println("APROVADO");
		} else {
			
			System.out.println("REPROVADO");	
		}
	}
		else{
	
	media = ((notaMaior*4) + ((notaMenor1*3)+(notaMenor2*3)));
	media = media/10;
	
	System.out.println("A média do aluno:|"+cod+"|"+ " é: "+media);
	
	if ( media >= 5){
		
		System.out.println("APROVADO");
	} else {
		
		System.out.println("REPROVADO");
	}
	}

}

}
[/code]

Podias ter mantido a soma das notas menores. Tinhas era de manter o factor 3 e não dobrar o factor.

 media = ((notaMaior*4) + (somaMenores*3))/10;  

A questão dos números iguais está mal. Só funciona se as três forem iguais.
E estás a complicar o que é simples. Basta nos teus if usar >= em vez de apenas >

if (nota1 >= nota2 && nota1 >= nota3){  
    notaMaior = nota1;  
    somaMenores = nota2 + nota3;  
}