Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

LuisMendes330

Exercício simples

Recommended Posts

LuisMendes330

Boas pessoal!

Tou a começar a aprender Java e tou aqui com algumas dúvidas neste exercício.

Ex.1:

Escreva um programa em JAVA que leia o salário mensal bruto de 10 funcionários de uma

empresa. O programa possuirá uma tabela de retenção de IRS de acordo com os valores

indicados na tabela seguinte.

Salário bruto (Euros) % Retenção de IRS

< 500 10%

[501, 1001[ 20%

[1001, 3001[ 30%

[3001, 5001[ 40%

>= 5001 50€

O programa deve permitir imprimir a listagem dos vencimentos brutos, retenção de IRS e

vencimento líquido dos 10 funcionários.

O que fiz na aula:

package salario;
import java.util.Scanner;
public class Salario {
 public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    float [] salarios;
    do{
        float salarios = input.nextFloat();
        salario[indice]=valordosalario;
        indice++
    }
    while(indice<=9)
 }

Falta no código muita coisa , mas já sei +- o que tenho a fazer.O valor dos vencimentos brutos vão ser colocados num array certo?A seguir verificar cada valor ,que está em determinado indice do array, a que percentagem de retenção de IRS está ligada. E por fim multiplicar o valor do salário bruto pelo valor de percentagem de retenção de IRS.

Como vou meter lá 10 salários?defino vários int dentro do main?

E o programa para imprimir tudo tenho de fazer sempre system.out.println?

Agora uma dúvida mais pequena ainda.

Eu tenho que usar a linha de comandos para testar o programa?

Obrigado!

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
HappyHippyHippo

O valor dos vencimentos brutos vão ser colocados num array certo?

sim

Como vou meter lá 10 salários?defino vários int dentro do main?

não percebo a pergunta devido a esta linha que tens no teu código:

float[] salarios;

sabes que tens de usar um array e depois perguntas como fazer ?

e ficas a saber que o que tens não é um array mas a declaração de uma variável que será usada para aceder a um array de elementos.

o array não existe até o instanciares:

salarios = new float[10];

E o programa para imprimir tudo tenho de fazer sempre system.out.println?

claro

Eu tenho que usar a linha de comandos para testar o programa?

se o teu IDE não tiver algum tipo de funcionalidade de consola dentro da aplicação, sim, não tens outra solução.

aplicações de consola, correm em consola


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

O IDE que tou a usar é o Netbeans.A consola dele é onde diz output certo?

Depois há outra coisa, eu saquei também o Java 7 update 15 (64 bits). Para que serve ao certo?

Não poderia programar Java apenas com o Netbeans IDE?

Ok, e depois de instanciar o array como coloco os valores dos salários brutos em cada índice do array?

Share this post


Link to post
Share on other sites
HappyHippyHippo

O IDE que tou a usar é o Netbeans.A consola dele é onde diz output certo?

sim, o netbeans tens a consola emulada num dos seus componentes onde podes fazer o output e input dos dados de uma aplicação de consola

Depois há outra coisa, eu saquei também o Java 7 update 15 (64 bits). Para que serve ao certo?

estás a programar em java, logo acho que é obvio ...

Não poderia programar Java apenas com o Netbeans IDE?

um carro com volante, rodas, chassie, pedais e tudo o resto continua a não funcionar sem motor pois não ?

Ok, e depois de instanciar o array como coloco os valores dos salários brutos em cada índice do array?

tens um ciclo no teu código, o que tens de fazer é, em vez de guardares o valor numa variável que estás a criar, guardar na posição correcta do array


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

Mas o que me faz um bocado de confusão é não abrir esse tal programa Java 7 lol Eu para fazer um programa não preciso apenas de código?Isso faço no Netbeans....

Mas onde vou por o valor ?

Tá melhor assim o código?

package salario;
import java.util.Scanner;
public class Salario {
   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       float [10] salarios;
       int indice=0
       do{
           float salarios = input.nextFloat();
           salario[indice]=valordosalario;
           indice++
           System.out.println(valordosalario)
       }
       while(indice<=9)
   }

Obrigado!

Share this post


Link to post
Share on other sites
HappyHippyHippo

Mas o que me faz um bocado de confusão é não abrir esse tal programa Java 7 lol Eu para fazer um programa não preciso apenas de código?Isso faço no Netbeans....

este é o grande problema do uso de IDE's por parte de iniciantes ...

quem disse que não usas o "programa" java ?

na realidade usas o "javac" para compilar e o "java" para correr a aplicação

package salario;
import java.util.Scanner;
public class Salario {
   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       float [10] salarios;
       int indice=0
       do{
           float salarios = input.nextFloat();
           salario[indice]=valordosalario;
           indice++
           System.out.println(valordosalario)
       }
       while(indice<=9)
   }

estás no netbeans ... tenho a certeza absoluta que este disse que tinhas erros no código !!!

olha bem para o que estás a fazer


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

Sim dá me erros.Mas não tou a perceber muito bem como corrigir...

package salario;
import java.util.Scanner;
/**
*
* @author Luis
*/
public class Salario {
   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       float[10] salarios; (Aqui diz que espera "]", onde coloco ?)
       int indice=0;
       int valordosalario;
       do{
           float salarios = input.nextFloat();
           salarios[indice]=valordosalario; (aqui diz me que precisa de um array, mas encontra apenas um float)
           indice++;
           System.out.println(valordosalario);
       }
       while(indice<=9);
   }

Tou com dúvidas em como colocar os valores dos salários dentro do array.

Share this post


Link to post
Share on other sites
LuisMendes330

Se souberem uns exercícios resolvidos simples digam sff. Tou muito verde nisto ainda...

Share this post


Link to post
Share on other sites
HappyHippyHippo

       float[10] salarios; (Aqui diz que espera "]", onde coloco ?)

float[] salarios;
salarios = new float[10];

           salarios[indice]=valordosalario; (aqui diz me que precisa de um array, mas encontra apenas um float)

quanto muito deverá dizer que espera um float e encontra um int !!!

depois responde a estas duas questões

- que tipo de dados é a variável valordosalario

- que valor tem a variável valordosalario

(e por amos de Deus, não respondas sem ao menos olhar para o código ...)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

quanto muito deverá dizer que espera um float e encontra um int !!!

depois responde a estas duas questões

- que tipo de dados é a variável valordosalario

- que valor tem a variável valordosalario

(e por amos de Deus, não respondas sem ao menos olhar para o código ...)

Respondendo à tua pergunta.

-A variável valordosalario é do tipo int.Pois reparei agora que tem de ser do tipo float certo?

-O valor que essa variável vai ter é o que estiver reservado em determinado índice do array.

A minha dúvida é como é que meto os 10 salários.Sei que tenho de meter num array ...

Share this post


Link to post
Share on other sites
HappyHippyHippo

-O valor que essa variável vai ter é o que estiver reservado em determinado índice do array

qual é a linha de código que diz isso ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

Acho que ainda não tenho essa linha...

Scanner input = new Scanner(System.in);

Esta faz o input certo?

Share this post


Link to post
Share on other sites
HappyHippyHippo

Acho que ainda não tenho essa linha...

pois, eu não perguntei o que será no futuro, eu perguntei pelo que está no código ...

Scanner input = new Scanner(System.in);

Esta faz o input certo?

não, cria um objecto para fazer a interação com o teclado


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

Mas podes me dar uma ideia mais concreta do que tenho de fazer?

Eu tou a pensar assim:

Vou inserir na consola 10 valores (os salários brutos) e a seguir irei obter 3 valores para cada salário, sendo eles o bruto, o liquido e a percentagem de retenção de IRS.

Já descobri que no meu código vou ter de acrescentar 5 if's para comparar o salário com a faixa de salário a que está ligada a respectiva taxa de retenção de IRS.

Por exemplo : If (salário <= 500){

salário*0,1}

Share this post


Link to post
Share on other sites
HappyHippyHippo

Mas podes me dar uma ideia mais concreta do que tenho de fazer?

Eu tou a pensar assim:

Vou inserir na consola 10 valores (os salários brutos) e a seguir irei obter 3 valores para cada salário, sendo eles o bruto, o liquido e a percentagem de retenção de IRS.

Já descobri que no meu código vou ter de acrescentar 5 if's para comparar o salário com a faixa de salário a que está ligada a respectiva taxa de retenção de IRS.

Por exemplo : If (salário <= 500){

salário*0,1}

força, implementa então


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package salario;
import java.util.Scanner;
/**
*
* @author Luis
*/
public class Salario {
   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       float[] salarios;
       salarios = new float[10];
       int indice=0;
       float valordosalario;
       double a=0.1;
       double b=0.2;
       double c=0.3;
       double d=0.4;
       double e=0.5;
       do{
           salarios [indice]= input.nextFloat();
           salarios[indice]=valordosalario;
           indice++;
           System.out.println(valordosalario);
           if (salarios<500){
               salarios*a
           }
           if(1001>salarios>=501){
               salarios*b
           }
           if(3001>salarios>=1001){
               salarios*c
           }
           if(5001>salarios>=3001){
               salarios*d
           }
           if(salarios>=5001){
               salarios*e
           }
       }
       while(indice<=9);
   }

Tá cheio de erros mas é para ficares a perceber como tou a pensar...

Share this post


Link to post
Share on other sites
HappyHippyHippo

para que estas duas instruções seguidas ?

salarios [indice]= input.nextFloat();
salarios[indice]=valordosalario;


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

Isso já fui eu a inventar um bocado. O que eu queria fazer era fazer corresponder o valor presente naquele momento no índice de salarios à variável valordosalario . Assim imprimia o valordosalario . Só se imprimir logo a variável salarios dentro da instrução do...

Share this post


Link to post
Share on other sites
HappyHippyHippo

public class Salario {

 public static void main(String[] args)
 {
   Scanner input = new Scanner(System.in);
   double[] salarios = new double[10];

   for (int indice = 0; indice < 10; indice++)
   {
     salarios[indice]= input.nextDouble();

     if (salarios[indice] < 500)
     {
       // saĺario inferior a 500
     }
     else if(salarios[indice] <= 1000)
     {
       // saĺario entre 500 e 1000
     }
     else if(salarios[indice] <= 3000)
     {
       // saĺario entre 1000 e 3000
     }
     else if(salarios[indice] <= 5000)
     {
       // saĺario entre 3000 e 5000
     }
     else
     {
       // salario superior a 5000
     }
   }
 }
}

faz o resto

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package salario;
import java.util.Scanner;
/**
*
* @author Luis
*/
public class Salario {
/**
    * @param args the command line arguments
    */
public static void main(String[] args) {
 Scanner input = new Scanner(System.in);
 double[] salarios = new double[10];
 for (int indice = 0; indice < 10; indice++)
 {
    salarios[indice]= input.nextDouble();
    if (salarios[indice] < 500)
    { double a=salarios*0.1;
            System.out.println(salarios);
            System.out.println("10%");
            System.out.println(a);

    // saĺario inferior a 500
    }
    else if(salarios[indice] <= 1000)
    {
    // saĺario entre 500 e 1000
    }
    else if(salarios[indice] <= 3000)
    {
    // saĺario entre 1000 e 3000
    }
    else if(salarios[indice] <= 5000)
    {
    // saĺario entre 3000 e 5000
    }
    else
    {
    // salario superior a 5000
    }
 }
}

Fiz só o primeiro if. Dá erro na linha em que defini o double. Eu vou ter de criar uma outra variável para o vencimento líquido certo? Como?

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
HappyHippyHippo

que tipo de variável é salarios ?

acahs que podes fazer isto ?

double a=salarios*0.1;


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LuisMendes330

É um array .

Eu quero arranjar maneira de criar uma variável que fique com o valor dessa multiplicação...

Share this post


Link to post
Share on other sites
HappyHippyHippo

se é um array, terás de aceder ao valor guardado numa posição

e não, não necessitas de nenhuma variável, só necessitas de apresentar um valor, não existe necessidade de guardar nada


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.