Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: santibarquero98 en 10 de Noviembre 2016, 13:56
-
Buenas, se supone que tengo que diseñar un programa mostrando métodos que calcule el salario de los trabajadores por horas, etc. Hay que introducir las horas por teclado, el problema viene cuando invoco el método pedirHoras();, y es que no se porque, se repite 3 veces, teniendo que introducirlo 3 veces. Es lo único que falla...estoy algo verde con los métodos porque los acabamos de empezar y no se ha explicado muy bien en clase...¿alguién podría ayudarme?
/**
* actividad5.java
* @author SJBC - 9 Nov 2016
*
*/
import java.util.Scanner; //Importacion de la libreria para introducir datos por teclado
public class actividad5 {
public static void main(String[] args) {
pedirHoras();
int resultado = calcularSalario();
System.out.print(resultado);
} //Cierre de main
//Metodo que pide las horas
public static int pedirHoras(){
Scanner teclado = new Scanner(System.in);
System.out.print("Introduce las horas que ha trabajado: ");
int horas = teclado.nextInt();
return horas;
} //CIERRE DEL METODO pedirHoras
//Metodo que calcula las horas
public static int calcularSalario(){
int resultado = 0, horasExtra = 0; //La variable resultado guardara el valor final
// La variable horasExtra guardara las horas extra
final int horasNormales = 35; //Esta constante guarda las horasNormales, esta variable se
//usara solo en el caso de que hayan horas extra.
if (pedirHoras() <= 35){ //Si se han realizado las horas normales o menos...
resultado = pedirHoras() * 15; //El resultado es esa operacion
} else{ //Si no...habran horas extras, por lo que...
horasExtra = (pedirHoras() - 35) * 22; //Se calculan las horas extra y su precio
resultado = horasNormales * 15 + horasExtra; //Se calcula el resultado directamente
}
return resultado;
} //CIERRE DEL METODO calcularSalario
public static void mostrarResultado(){
}
} //Cierre de clase
-
Mira un poco con la modificación que le hice a tu código y hace comparación con el tuyo.
package actividad5;
import java.util.Scanner; //Importacion de la libreria para introducir datos por teclado
public class Actividad5 {
public static void main(String[] args) {
//pedirHoras();
calcularSalario();
}
//Metodo que pide las horas
public static int pedirHoras() {
Scanner teclado = new Scanner(System.in);
System.out.print("Introduce las horas que ha trabajado: ");
int horas = teclado.nextInt();
return horas;
} //CIERRE DEL METODO pedirHoras
//Metodo que calcula las horas
public static void calcularSalario() {
int resultado = 0, horasExtra = 0; //La variable resultado guardara el valor final
// La variable horasExtra guardara las horas extra
final int horasNormales = 35; //Esta constante guarda las horasNormales, esta variable se
int hora = pedirHoras();
//usara solo en el caso de que hayan horas extra.
if (hora <= 35) { //Si se han realizado las horas normales o menos...
resultado = hora * 15; //El resultado es esa operacion
System.out.println(resultado);
} else { //Si no...habran horas extras, por lo que...
horasExtra = (hora - 35) * 22; //Se calculan las horas extra y su precio
resultado = horasNormales * 15 + horasExtra; //Se calcula el resultado directamente
System.out.println(resultado);
}
//return resultado;
} //CIERRE DEL METODO calcularSalario
public static void mostrarResultado() {
}
}
El error que encontré que vos le llamaba en mucha parte a pedirHora(); solo es necesario llamarlo una vez y después su valor guardar en una variable el segundo le puse como void noma ya que no va a devolver mas ningún valor.
Yo hice como vos hace otra vez aunque lo correcto seria crear una clase que se encargue de hacer todo los calculo y llamarlo nomas desde el main como un objeto.