Algoritmo de métodos e parametros[resolvidoooo]

9 respostas
D

alguém poderia me dizer pq nao esta entrando nada no imposto e no auxilio??
alguém pode ajudar?

import java.util.*;

public class exs {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stubh
		double valor_sal_min, co, valor_sal_bruto = 0, imp, sal_bruto, aux,grat,sal;
		char turno, categoria;
		int num_hrs_trab;

		Scanner dado = new Scanner(System.in);

		System.out.println("digite o valor do salário mínimo");
		valor_sal_min = dado.nextDouble();
		System.out.println("digite o turno de trabalho");
		turno = dado.next().charAt(0);
		while (turno != 'V' && turno != 'N' && turno != 'M') {
			System.out.println("turno inválido!digite novamente: ");
			turno = dado.next().charAt(0);
		}
		System.out.println("digite a categoria");
		categoria = dado.next().charAt(0);
		while (categoria != 'O' && categoria != 'G') {
			System.out.println("categoria inválida! digite novamente: ");
			categoria = dado.next().charAt(0);
		}
		System.out
				.println("digite o número de horas trabalhadas do funcionário");
		num_hrs_trab = dado.nextInt();

		co = coeficiente(turno, valor_sal_min);
		System.out.println("o valor do coeficiente foi " + co);
		sal_bruto = valor_sal_bruto(num_hrs_trab, co);
		System.out.println("o valor do salário bruto foi " + sal_bruto);
		imp = imposto(valor_sal_bruto);
		System.out.println("o valor do imposto foi " + imp);
		grat = gratificacao(turno, num_hrs_trab);
		System.out.println("o valor da gratificação foi"+grat);
		aux = auxilio(categoria, co, valor_sal_bruto);
		System.out.println("o valor do auxilio é "+aux);
		sal = salliquido(sal_bruto,imp,grat,aux);
		System.out.println("o salario liquido foi "+sal);
		classifica(sal);
	}

	static double coeficiente(char turno, double valor_sal_min) {
		double valor_coeficiente = 0;

		if (turno == 'M') {
			valor_coeficiente = valor_sal_min * 10 / 100;
		} else if (turno == 'V') {
			valor_coeficiente = valor_sal_min * 15 / 100;
		} else {
			valor_coeficiente = valor_sal_min * 12 / 100;
		}
		return valor_coeficiente;
	}

	static double valor_sal_bruto(int num_hrs_trab, double valor_coeficiente) {
		return (num_hrs_trab * valor_coeficiente);
	}

	static double imposto(double valor_sal_bruto) {
		double imp = 0;
		if (valor_sal_bruto <= 500) {
			imp = valor_sal_bruto * 10 / 100;
		} else {
			imp = valor_sal_bruto * 15 / 100;
		}
		return imp;
	}
	static double auxilio (char categoria, double coeficiente, double valor_sal_bruto){
		double salarioaux = 0;
		if(categoria == 'O' && coeficiente <=25){
			salarioaux = valor_sal_bruto*1/3;
			
		}else{
			salarioaux = valor_sal_bruto*1/2;
		}
		return salarioaux;
		
	}
	static double gratificacao (char turno, int num_hrs_trab){
		double grat  =0 ;
		if(turno == 'N' && num_hrs_trab > 80){
			grat = 50;
		}else{
			grat = 30;
		}
		return grat;
	}
	static double salliquido (double sal_bruto, double imposto, double gratificacao, double auxilio){
		return(sal_bruto - imposto + gratificacao + auxilio);
	}
	static void classifica (double sal){
		if(sal < 350){
			System.out.println("mal remunerado");
		}else if(sal>350 && sal<=600){
			System.out.println("normal");
		}else{
			System.out.println("bem remunerado");
		}
	}
}

9 Respostas

D

e me explicar qd eu sei que é metodo com retorno e sem retorno de uma forma mais simples…

D

eu resolvi esse exercicio mais ainda nao entendi o contexto em si alguém pode me explicar d forma maisss simples!! obrigado!

gustavo_mb

Bom, todos os métodos tem retorno! Void é um tipo de retorno, que diz que não retorna nada! :lol:

Agora, quem determina se será necessário ou não um retorno(diferente de void) é você!

Em geral, usa-se void para métodos que não necessitam retornar valores para quem os chamou.

D

sim e pq nao esta entrando nada no imposto e no auxilio???

T

o que deve estar havendo com auxilio é o seguinte.

quando ele fizer 1/2 ou 1/3 deve estar trazendo valor 0 pois é o quociente da divisao. assim deve estar ocorrendo com coeficiente

D

ok vou tenta e no imposto nao ta entrando tbm

D

wellington isso é apenas um algoritmo e foi assim que a professora ensinou nao precisa complica só quero saber o porquê de não estar entrando resultado no imposto nem no auxilio…

pois quando executo os dois da resultado zero e não sei porque

alguém poderia me dizer?
obrigada!

D
import java.util.*;

public class exs {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stubh
		double valor_sal_min, co, valor_sal_bruto = 0, imp, sal_bruto, aux,grat,sal;
		char turno, categoria;
		int num_hrs_trab;

		Scanner dado = new Scanner(System.in);

		System.out.println("digite o valor do salário mínimo");
		valor_sal_min = dado.nextDouble();
		System.out.println("digite o turno de trabalho");
		turno = dado.next().charAt(0);
		while (turno != 'V' && turno != 'N' && turno != 'M') {
			System.out.println("turno inválido!digite novamente: ");
			turno = dado.next().charAt(0);
		}
		System.out.println("digite a categoria");
		categoria = dado.next().charAt(0);
		while (categoria != 'O' && categoria != 'G') {
			System.out.println("categoria inválida! digite novamente: ");
			categoria = dado.next().charAt(0);
		}
		System.out
				.println("digite o número de horas trabalhadas do funcionário");
		num_hrs_trab = dado.nextInt();

		co = coeficiente(turno, valor_sal_min);
		System.out.println("o valor do coeficiente foi " + co);
		sal_bruto = valor_sal_bruto(num_hrs_trab, co);
		System.out.println("o valor do salário bruto foi " + sal_bruto);
		imp = imposto(valor_sal_bruto);
		System.out.println("o valor do imposto foi " + imp);
		grat = gratificacao(turno, num_hrs_trab);
		System.out.println("o valor da gratificação foi"+grat);
		aux = auxilio(categoria, co, valor_sal_bruto);
		System.out.println("o valor do auxilio é "+aux);
		sal = salliquido(sal_bruto,imp,grat,aux);
		System.out.println("o salario liquido foi "+sal);
		classifica(sal);
	}

	static double coeficiente(char turno, double valor_sal_min) {
		double valor_coeficiente = 0;

		if (turno == 'M') {
			valor_coeficiente = valor_sal_min * 10 / 100;
		} else if (turno == 'V') {
			valor_coeficiente = valor_sal_min * 15 / 100;
		} else {
			valor_coeficiente = valor_sal_min * 12 / 100;
		}
		return valor_coeficiente;
	}

	static double valor_sal_bruto(int num_hrs_trab, double valor_coeficiente) {
		return (num_hrs_trab * valor_coeficiente);
	}

	static double imposto(double valor_sal_bruto) {
		double imp = 0;
		if (valor_sal_bruto <= 500) {
			imp = valor_sal_bruto * 10 / 100;
		} else {
			imp = valor_sal_bruto * 15 / 100;
		}
		return imp;
	}
	static double auxilio (char categoria, double coeficiente, double valor_sal_bruto){
		double salarioaux = 0;
		if(categoria == 'O' && coeficiente <=25){
			salarioaux = valor_sal_bruto/3;
			
		}else{
			salarioaux = valor_sal_bruto/2;
		}
		return salarioaux;
		
	}
	static double gratificacao (char turno, int num_hrs_trab){
		double grat  =0 ;
		if(turno == 'N' && num_hrs_trab > 80){
			grat = 50;
		}else{
			grat = 30;
		}
		return grat;
	}
	static double salliquido (double sal_bruto, double imposto, double gratificacao, double auxilio){
		return(sal_bruto - imposto + gratificacao + auxilio);
	}
	static void classifica (double sal){
		if(sal < 350){
			System.out.println("mal remunerado");
		}else if(sal>350 && sal<=600){
			System.out.println("normal");
		}else{
			System.out.println("bem remunerado");
		}
	}
}
WellingtonRamos

Primeiro, procure se informar sobre padrões de código java :wink: http://www.oracle.com/technetwork/java/codeconvtoc-136057.html

Segundo,

Você está multiplicando um double pelo resultado da divisão de dois inteiros. Considerando isso, qual o resultado de 1/3?
Porque, ao invés de fazer isso, você não dividiu direto por 3?

Criado 5 de outubro de 2011
Ultima resposta 5 de out. de 2011
Respostas 9
Participantes 4