Ajuda em Exercicios de Java [RESOLVIDO]

17 respostas
B

Olá, gostaria que alguem me ajudasse a resolver um exercicio de java!!
OBS: Estou usando o NetBeans!! Neste caso será usado recursos que aprendi ate agora como:

  • import javax.swing.*; JOptionPane.showMessageDialog, JOptionPane.showInputDialog, public static void main, double, If, else, try, catch, float, operadores: +, - etc, string, static string, tipos primitivos: char, byte, short, long, boolean, int

Criar um aplicativo, chamado Exercicio0706 que solicite o salário de um funcionario e calcule o valor do INSS que deve ser descontado dele!
*O salário deve ser um valor igual ou maior que R$ 465,00. Se o salário for invalido a esse, exiba uma mensagem de erro e encerre o aplicativo

  • A aliquota do INSS é o percentual que deve ser descontado do salário definida pela tabela:
    Salario…Aliquota
    Até R$ 965,67…8%
    De 965,68 a 1.609,45…9%
    De 1.609,46 a 3.218,90…11%
    *O teto para o recolhimento de INSS é de R$354,07. Esse é o valor maximo que deve ser descontado do salário.
    *Ao final exiba uma mensagem contendo o salário, a alíquota de INSS aplicavel ao mesmo, o valor do desconto e o valor líquido que será pago ao funcionario!

No final deverá ficar assim!
1ª tela falando: informe o salário! se for inválido mostrar o Salário inválido e fechar
Se for válido no caso igual ou maior 465,00! Mostrar o Salario Bruto, a alíquota do INSS, Valor do INSS, Salario Liquido

Exemplo:Informe o Salário: 1000

Salário Bruto: R$1000
Áliquota do INSS: 9
Valor do INSS: R$90,00
Salário liquido: R$910,00

A unica coisa q consegui resolve ate agora foi pra informar o salario, e se for menor q 465 dar mensagem de erro:
Pra continuar to sem ideias, jah temtei de tudo e n consegui… se puderem ajudar…

package ExerciciosJava;
import javax.swing.*;
public class Exercicio0706
{
public static void main(String[] args)
{
String Salario;
Salario = JOptionPane.showInputDialog(null,"Informe o salário");
int x = Integer.parseInt(Salario);
if (x<465)
{
Salario = "Salario Inválido: R$ "+Salario;
JOptionPane.showMessageDialog(null,Salario,"Erro",0);
System.exit(0);
}
if (x>=465)
{
Salario = "Salário : R$ "+Salario;
JOptionPane.showMessageDialog(null,Salario,"Mensagem",1);
}
}
}

17 Respostas

caio_ferreira

Oq vc já fez do exercício e qual a sua dúvida?

O pessoal no forum não resolve exercícios para ninguém, aqui o pessoal ajuda de alguma forma, dando dicas, tirando dúvidas, para você conseguir resolver seu problema.

Se você postar oq vc já fez, tenho certeza que alguém vai te ajudar a terminar.

B

A unica coisa q consegui resolve ate agora foi pra informar o salario, e se for menor q 465 dar mensagem de erro:
Pra continuar to sem ideias, jah temtei de tudo e n consegui… se puderem ajudar…

package ExerciciosJava;

import javax.swing.*;

public class Exercicio0706

{

public static void main(String[] args)

{

String Salario;

Salario = JOptionPane.showInputDialog(null,Informe o salário);

int x = Integer.parseInt(Salario);

if (x<465)

{

Salario = "Salario Inválido: R$ "+Salario;

JOptionPane.showMessageDialog(null,Salario,Erro,0);

System.exit(0);

}

if (x>=465)

{

Salario = "Salário : R$ "+Salario;

JOptionPane.showMessageDialog(null,Salario,Mensagem,1);

}

}

}
caio_ferreira
se(salario <= 465){
sai do sistema
}se nao(salario <= 965){
 (salario * 8) /100;
}se nao(salario >= 965 && salario <=1609){
 (salario *9) /100;
}

Pra vc continuar

B

Nao deu certo isso que vc passou… depois do if… colocar esse else… n vai!

D

olha da uma olhada ai nao sei se esta completo mais ve aiii da arrumada de acordo com quem vc aprendeu té maiss!

import java.util.*;
public class Exercicio0706 {

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

		double salario,total = 0,recebe = 0;
		
		Scanner dado = new Scanner(System.in);
		
		System.out.println("Digite o salario do funcionario");
		salario = dado.nextDouble();
		
		if(salario > 465){
		if(salario <= 975.67){
			total = salario * 8/100;
			recebe = salario - total;
			System.out.println("a aliquota é de 8%");
		}else if(salario == 965.68 && salario <= 1609.45){
			total = salario * 9/100;
			recebe = salario - total;
			System.out.println("a aliquota é de 9%");
		}else{
			total = salario * 11/100;
			recebe = salario - total;
			System.out.println("a aliquota é de 11%");
		}
		}	
		if(salario <= 465){
			System.out.println("salario inválido aplicativo encerrado");	
			System.exit(0);
		}
       
	System.out.println("Salario Bruto"+salario);
	System.out.println("Valor do INSS"+total);
	System.out.println("salario liquido"+recebe);
	
	}
}
lucas_guj

Não tinha nada melhor para fazer, então fiz para você. Ao invés de apenas copiar e colar. Tente entender cada coisa e onde você errou e o que você não pensou e fez. Você tem que pensar nos “DADOS” que sua classe ou objeto precisam conhecer. E o que ela precisa fazer. E ai passar esses dados como variáveis e o que fazer como método. Como é uma classe simples não usei um método alem de main. Está ai:

//package ExerciciosJava;  
import javax.swing.JOptionPane;  

public class Exercicio0706 {  
	public static void main( String[] args ) {
		// Como aqui é double então você pode inserir o salario com "." no InputDialog. Ex: 464.88
		double salarioBru = 0.0; // armazena o salário Bruto
		double salarioLiq = 0.0; // armazena o salário líquido
		int taxa		  = 0;   // armazena a áliquota
		
		String informeSal = JOptionPane.showInputDialog(null,"Informe o salario" );
		salarioBru = Double.parseDouble( informeSal );
		
		if( salarioBru < 465.00 ) { 
			String mensagemInvalida = String.format( "Salario Invalido: R$%.2f", salarioBru );
			JOptionPane.showMessageDialog(null, mensagemInvalida ,"Erro", 0 );  
			System.exit(0);
		}
		else if( salarioBru >= 465.00 && salarioBru <= 965.67 ) {
			taxa = 8; // aliquota de 8%
			double salBru = salarioBru * taxa;
			salBru       /= 100;
			salarioLiq	  = salarioBru - salBru;
			String mensagem = String.format( "<html>Salario Bruto: R$%,.2f<br>Aliquota do INSS: %d%%<br>" +
				"Valor do INSS: R$%,.2f<br>Salario Liquido: R$%,.2f</html>", salarioBru, taxa, salBru, salarioLiq );
			JOptionPane.showMessageDialog(null, mensagem, "Mensagem", 1);
		}
		else if( salarioBru >= 965.68 && salarioBru <= 1609.45 ) {
			taxa = 9; // aliquota de 9%
			double salBru = salarioBru * taxa;
			salBru       /= 100;
			salarioLiq	  = salarioBru - salBru;
			String mensagem = String.format( "<html>Salario Bruto: R$%,.2f<br>Aliquota do INSS: %d%%<br>" +
				"Valor do INSS: R$%,.2f<br>Salario Liquido: R$%,.2f</html>", salarioBru, taxa, salBru, salarioLiq );
			JOptionPane.showMessageDialog(null, mensagem, "Mensagem", 1);
			System.exit(0);
		}
		else if( salarioBru >= 965.68 && salarioBru <= 3218.90 ) {
			taxa = 11; // aliquota de 11%
			double salBru = salarioBru * taxa;
			salBru       /= 100;
			salarioLiq	  = salarioBru - salBru;
			String mensagem = String.format( "<html>Salario Bruto: R$%,.2f<br>Aliquota do INSS: %d%%<br>" +
				"Valor do INSS: R$%,.2f<br>Salario Liquido: R$%,.2f</html>", salarioBru, taxa, salBru, salarioLiq );
			JOptionPane.showMessageDialog(null, mensagem, "Mensagem", 1);
			System.exit(0);
		}
		else if( salarioBru > 3218.90 ) {
			JOptionPane.showMessageDialog(null, "O teto para recolhimento de INSS e: R$354,08");
			System.exit(0);
		}
	}
}
B

Nossa mano… valeeu mesmo!! Eu copiei e colei para ver como ia ficar, e ficou igualsinho como esperado!!
Agora vou ler e enteder ele TODOO!! para proximos exercicios eu consegui fazer sozinho!! ;D
valeeu!

B

tipo… nesse caso vc usou um recurso q eu n aprendi ainda no curso!!
que no caso é o html: String.format( “Salario Bruto: R$%,.2f
Aliquota do INSS: %d%%
” +
“Valor do INSS: R$%,.2f
Salario Liquido: R$%,.2f”

Tambem nao sei pra q serve esse R$%.2f no “Salario Invalido: R$%.2f”

Sera q tem como ser feito usando outro metodo??
se puder ajudar…

Um erro q deu, foi q qndo informo um salario maior que 3218 da soh essa mensagem “O teto para recolhimento de INSS e: R$354,08” e mais nada

lucas_guj

brunaum15:
tipo… nesse caso vc usou um recurso q eu n aprendi ainda no curso!!
que no caso é o html: String.format( “Salario Bruto: R$%,.2f
Aliquota do INSS: %d%%
” +
“Valor do INSS: R$%,.2f
Salario Liquido: R$%,.2f”

Tambem nao sei pra q serve esse R$%.2f no “Salario Invalido: R$%.2f”

Sera q tem como ser feito usando outro metodo??
se puder ajudar…

Um erro q deu, foi q qndo informo um salario maior que 3218 da soh essa mensagem “O teto para recolhimento de INSS e: R$354,08” e mais nada

Bom, vamos lá. Respondendo a última pergunta. Isso não é um erro. Isso fui eu que fiz nessas linhas:

else if( salarioBru > 3218.90 ) {  
    JOptionPane.showMessageDialog(null, "O teto para recolhimento de INSS e: R$354,08");  
    System.exit(0);  
}

Eu fiz isso, porque lá no problema da primeira mensagem do tópico você disse assim:

Ai eu fiz isso para não descontar nenhum valor que pasasse disso. Entendeu?

Quanto ao recurso que eu usei que você ainda não aprendeu é o seguinte. Geralmente para pular linha no texto em java, quando está programando para exibir a saída no DOS você usa o “\n” ou então o “println” certo? Nesse caso. Na janela do JOptionPane, o “\n” não estava funcionando, ai o que eu fiz? Usei HTML que não é uma linguagem de programação mais de marcação de texto (Usada para fazer sites, você deve saber?). Então, ai nessa linguagem começa assim:

<html>
    <head>
           Cabeçalho do site
    </head>

    <body>
            Corpo do site
    <body>
</html>

Isso é só uma palha, porque existem várias tags, mais você não precisa se preocupar com isso. No HTML, para pular linha, usa-se a tag “
” (OBS: Não é necessária fechar a tag assim: “” ). Então nesse caso voce não precisa de nem apenas o e o
para pular as linhas. Entendeu? Por algum motivo QUE EU AINDA NÃO SEI, o “\n” não funcionou para pular linha na exibição gráfica. Ocorria uma exceção chamada UnknownFormatConversionException que eu não parei para ler.

E quanto ao String.format() e a isso “R$%,.2f” ?

Conhece FLAGS?

Flags são esses marcadores que usamos para exibir determinado caracter, string, double, etc com precisão. Por exemplo, 163,09: Para exibir somente “163,0” eu faria assim: %.1f, esse “.1f” significa uma casa depois da virgula. Ai voce tem que estudar e vêr os flags e suas formatações. NADA DE DIFICIL. Muito facil isso. Nem se preocupe. Ai eu usei R$ como texto e esses flags eles vem indicado sempre depois do sinal de “%” (Porcentagem). Isso indica que é um flag. Para exibir inteiro usa-se a letra d, para double e outros usa-se f e assim tem mais alguns. Ai eu usei a , para ele separar certinho o número por exemplo: 1000.00 (mil reais) sem virgula ficaria assim. Ai com a virgula fica assim: “1,000.00” Entendeu? E com o “.2” quer dizer duas casas decimais depois da virgula.

Lá em:

Aliquota do INSS: %d%%

Eu usei dois sinais de Porcento depois do “d” porque se eu usasse apenas um ele pensaria que seria uma flag e ai daria erro. Entao com dois ele exibi o sinal de porcentagem que é a taxa. Entendeu? E o d é para exibir um inteiro.

Quanto ao método format de String, vamos ver o que a java API diz sobre isso:

“Returns a formatted string using the specified format string and arguments.”

Retorna uma string formata usando especificadores de formato string e argumentos. Entendeu? O que eu fiz lá emcima.

Ajudei? Deixei claro? Qualquer coisa pergunta.

B

No caso do “O teto para o recolhimento de INSS é de R$354,07” eu n queria q aparecesse essa mensagem, e sim que n cobrasse mais que isso entendeu??
Mais acho que isso é facil de mudar, né??

Entao… vc deixou claro quanto ao oq eu n tinha aprendido ainda…
Mais ai nesse exercicio, eu n queria usar isso, pois o prof ainda n ensinou… e queria usar recursos q eu aprendi… entendeu??
Queria saber se tem como mudar??

Valeu…

lucas_guj

É fácil mudar sim. Vai lá na linha e coloca o quer. Senão quer mais cobrar, ou fechar o programa, ou mandar outra mensagem, sei lá você que tem que saber agora.

Entendi o que quer dizer. Fazer isso sem usar especificadores de formato tudo no mesmo JOptionPane? Hmm…Não sei não.

B

Começei a fazer assim agora:

String mensagem = "Salário Informado: R$ " + salarioFinal + "\nAlíquota do INSS: " + aliquota + “%”;
JOptionPane.showMessageDialog(null, mensagem, “Mensagem”, 1);

A da alíquota ficou certinho, mais ai a do salario ficou zuado e n da pra colocar %,.2f fica Salário: R$ 460,0

OBS: te add no msn… [email removido] né?

lucas_guj

Sim é esse msn sim. Vai ficar assim mesmo, você não está usando flag.

B

Q saco aqueles dois funcionou… ai quis colocar os outros dois e da erro:

String mensagem = "Salário Informado: R$ " + salarioInformado + "\nAlíquota aplicável: " + aliquota + "% " "\nValor do INSS: R$ " + INSS + "\nSalário Final: R$ " + salarioFinal;

ahh achei é o "% " tirei ele e funfo!, mais ai o final vai ficar zuado… mais vo dexa assim mesmo…

lucas_guj

brunaum15:
Q saco aqueles dois funcionou… ai quis colocar os outros dois e da erro:

String mensagem = "Salário Informado: R$ " + salarioInformado + "\nAlíquota aplicável: " + aliquota + "% " "\nValor do INSS: R$ " + INSS + "\nSalário Final: R$ " + salarioFinal;

ahh achei é o "% " tirei ele e funfo!, mais ai o final vai ficar zuado… mais vo dexa assim mesmo…

Você esqueceu de concatenar depois do sinal de porcentagem de aliquota e o valor do INSS.

B

aee terminei, olha como ficou:

package ExerciciosJava;
import javax.swing.JOptionPane;
public class Exercicio0706 {

    public static void main(String[] args) {
        double salarioInformado = 0.0;
        double salarioFinal = 0.0;
        int aliquota = 0;

        String informeSal = JOptionPane.showInputDialog(null, "Informe o salário");
        salarioInformado = Double.parseDouble(informeSal);

            if (salarioInformado < 465.00) {
            String salarioInvalido = String.format("Salário Inválido: R$%.2f", salarioInformado);
            JOptionPane.showMessageDialog(null, salarioInvalido, "Erro", 0);
            System.exit(0);
            }        
            else if (salarioInformado >= 465.00 && salarioInformado <= 965.67) {
            aliquota = 8;
            double INSS = (salarioInformado * aliquota) / 100;
            salarioFinal = salarioInformado - INSS;
            String mensagem = String.format("Salário Informado: R$%.2f ", salarioInformado);
            String mensagem1 = String.format("\nAlíquota aplicável: %d%% ", aliquota);
            String mensagem2 = String.format("\nValor do INSS: R$%.2f ", INSS);
            String mensagem3 = String.format("\nSalário Final: R$%.2f ", salarioFinal);
            JOptionPane.showMessageDialog(null, mensagem+mensagem1+mensagem2+mensagem3, "Mensagem", 1);
            System.exit(0);
            }           
            else if (salarioInformado >= 965.68 && salarioInformado <= 1609.45) {
            aliquota = 9;
            double INSS = (salarioInformado * aliquota) / 100;
            salarioFinal = salarioInformado - INSS;
            String mensagem = String.format("Salário Informado: R$%.2f ", salarioInformado);
            String mensagem1 = String.format("\nAlíquota aplicável: %d%% ", aliquota);
            String mensagem2 = String.format("\nValor do INSS: R$%.2f ", INSS);
            String mensagem3 = String.format("\nSalário Final: R$%.2f ", salarioFinal);
            JOptionPane.showMessageDialog(null, mensagem+mensagem1+mensagem2+mensagem3, "Mensagem", 1);
            System.exit(0);
            }           
            else if (salarioInformado >= 1609.46 && salarioInformado <= 3218.90) {
            aliquota = 11;
            double INSS = (salarioInformado * aliquota) / 100;
            salarioFinal = salarioInformado - INSS;
            String mensagem = String.format("Salário Informado: R$%.2f ", salarioInformado);
            String mensagem1 = String.format("\nAlíquota aplicável: %d%% ", aliquota);
            String mensagem2 = String.format("\nValor do INSS: R$%.2f ", INSS);
            String mensagem3 = String.format("\nSalário Final: R$%.2f ", salarioFinal);
            JOptionPane.showMessageDialog(null, mensagem+mensagem1+mensagem2+mensagem3, "Mensagem", 1);
            System.exit(0);
            }  
            else if (salarioInformado > 3218.91) {                          
            aliquota = 11;
            double INSS = 354.07; 
            salarioFinal = salarioInformado - INSS;
            String mensagem = String.format("Salário Informado: R$%.2f ", salarioInformado);
            String mensagem1 = String.format("\nAlíquota aplicável: %d%% ", aliquota);
            String mensagem2 = String.format("\nValor do INSS: R$%.2f ", INSS);
            String mensagem3 = String.format("\nSalário Final: R$%.2f ", salarioFinal);
            JOptionPane.showMessageDialog(null, mensagem+mensagem1+mensagem2+mensagem3, "Mensagem", 1);
            System.exit(0);
            } 
    }
}

Valeeu…

lucas_guj

Show. Qualquer coisa só perguntar, se eu puder ajudar, ajudo. Não esqueça de editar o tópico e colocar como RESOLVIDO. Abraços

Criado 17 de março de 2012
Ultima resposta 18 de mar. de 2012
Respostas 17
Participantes 4