2016-05-24 5 views
-1

このコードに問題があります。計算し、クラス内のインスタンス変数として初期化した変数edadへの回答を保存します。この演習では、2つの方法、つまり値を設定するための方法と値を取得する方法の2つを実行するように求めています。変数edadには、その人の誕生年の値から2016を引いた値が含まれている必要があります。何らかの理由で、値0が返されます。私の結論には、次のコードに誤りがあります。私はクラスとメソッドで少し新しいです。助言がありますか?メソッドのエラー

そして、誰かが私がこれを学ぶことができる本やコンテンツについての提案があれば、言及されていればそれを感謝するでしょう。私は現在、スペイン語圏の国で、スペイン語で授業を受けています。私は英語の本の提案を高く評価してくれます。

これはメソッドを含む私のクラスである:

package CaclculadoraFCE; 

public class FrecuenciasCardiacas { 

    String nombre, appellido; 
    private int año, mes, dia; 
    private int edad, currentyear=2016; 
    int frecuenciamaxima, edaddepersona; 
    int frequenciadebidaminima, frequenciadebidamaxima; 

    public void nombredepersona(String name){ 
     nombre = name; 
    } 
    public String name(){ 
     return nombre; 
    } 
    public void appellidodepersona(String surname){ 
     appellido = surname; 
    } 
    public String surname(){ 
     return appellido; 
    } 
    public void anodenacimiento(int year){ 
     año = year; 
    } 
    public int age(){ 
     return año; 
    } 
    public void mesdenacimiento(int month){ 
     mes = month; 
    } 
    public int month(){ 
     return mes; 
    } 
    public void diadenacimiento(int day){ 
     dia = day; 
    } 
    public int day(){ 
     return dia; 
    } 
    public void fechadenacimiento(){ 
     edad = currentyear-año; 
    } 
    public int edaddepersona(){ 
     return edad; 
    } 
    public int frequency(){ 
     frecuenciamaxima = 220-edad; 
     return frecuenciamaxima; 
    } 
    public void frequenciaesperada(){ 
     frequenciadebidaminima = (frecuenciamaxima*50)/100; 
     frequenciadebidamaxima = (frecuenciamaxima*85)/100; 
    } 
    public double frecuenciamin(){ 
     return frequenciadebidaminima; 
    } 
    public double frecuenciamax(){ 
     return frequenciadebidamaxima; 
    } 
    public void Message(){ 
     System.out.println("Nombre: " + nombre + "\n" + "Appellido: " + appellido + "\n" + "Edad: " + edad + "\n" + 
      "Frecuencia de Corazon: " + frecuenciamaxima + "\n" + "frecuencia debida desde: " + frequenciadebidaminima + " a: " 
      + frequenciadebidamaxima); 
     System.out.println("\n" + dia + "/" + mes + "/" + año); 
    } 
} 

そして、これはあなたがfechadenacimiento()を呼び出していないので、あのを設定した後、そう決して私の主な方法

package CaclculadoraFCE; 
import java.util.Scanner; 
import java.util.InputMismatchException; 

public class Test { 

    public static void main(String args[]){ 

     Scanner input = new Scanner(System.in); 
     String name, surname; 
     int year, month, day; 
     FrecuenciasCardiacas frecuencias = new FrecuenciasCardiacas(); 
     try{ 
      System.out.println("Introdusca su nombre"); 
      name = input.nextLine(); 
      System.out.println("Introdusca su appellido"); 
      surname = input.nextLine(); 
      System.out.println("En que año nacio?"); 
      year = input.nextInt(); 
      System.out.println("En que numero del mes nacio?"); 
      month = input.nextInt(); 
      System.out.println("En que dia del mes nacio?"); 
      day = input.nextInt(); 
      frecuencias.nombredepersona(name); 
      frecuencias.appellidodepersona(surname); 
      frecuencias.anodenacimiento(year); 
      frecuencias.mesdenacimiento(month); 
      frecuencias.diadenacimiento(day); 
      System.out.println();; 
      frecuencias.Message(); 
     } 
     catch(InputMismatchException e){ 
      System.out.println("Pulse los nombres con solo letras y despues de año con solo numeros"); 
     } 
    } 
} 
+0

コードスニペットは問題の原因ではありません。より多くのコードを投稿してください:特に、変数とクラスインスタンスの定義とインスタンス化。どのIDEを使用していますか?通常、クラス変数のゲッターとセッターを生成するコードジェネレーターが組み込まれています。 –

+0

可能な重複:http://stackoverflow.com/questions/2036970/how-do-getters-and-setters-work(http://stackoverflow.com/search?q=getters+setters) –

+0

año?完全なコードを投稿 –

答えて

0

です:

public void anodenacimiento(int year){ 
    año = year; 
    fechadenacimiento(); 
} 
関連する問題