2014-10-05 63 views
0

我正在编写健康记录计算机化和编写程序的代码。但是,当我运行它,它不仅赋予了输出: -构造函数和方法没有给出输出

总多年的那个人就是21613

BMI值 在重量:小于18.5 正常:18.5和24.9 超重之间:25之间和29.9 肥胖:30或更大 输入身高和体重

,但我所有的其他方法都无法运行,并且构造函数的值,以及,请你只给我的想法如何解决这个问题? 我的计划是: -

import java.util.Scanner; 

class Starter{ 

    private String FirstName; 
    private String LastName; 
    private String Gender; 
    private int DOB; 
    private int MOB; 
    private int YOB; 
    private double Height; //inches 
    private double Weight; //KG. 
    String greeting=FirstName+LastName+Gender; 
    double BMI1;  
    public Starter(){ 
     Scanner input=new Scanner(System.in); 
     System.out.println("Enter all the required data"); 
     FirstName=input.nextLine(); 
     LastName=input.nextLine(); 
     Gender=input.nextLine(); 
     DOB=input.nextInt(); 
     MOB=input.nextInt(); 
     YOB=input.nextInt(); 
    } 





    public void setFirstName(String Fname){ 
      FirstName=Fname; 

      } 
     public void setLastName(String Lname){ 
      LastName=Lname; 
     } 
     public void setGender(String G){ 
      Gender=G; 
      } 
     public void setBirth(int Day,int Month,int Year){ 
      DOB=Day; 
      MOB=Month; 
      YOB=Year; 


     } 
     public String getFirstName(){ 
      return FirstName; 
     } 
     public String getLastName(){ 
      return LastName; 
     } 
     public String getGender(){ 
      return Gender; 
     } 
     public int getDOB() 
     { 
     return DOB; 
    } 
     public int getMOB(){ 
      return MOB; 

     } 
     public int getYOB(){ 
      return YOB; 
     } 
     public void BMI1(){ 
      System.out.println("Enter the value of Height and Weight"); 
      Scanner input1=new Scanner(System.in); 
      Height=input1.nextFloat(); 
      Weight=input1.nextFloat(); 
      BMI1=Weight/(Height*Height); 
      System.out.println("The BMI value is :\t"+BMI1); 
     } 
     public void getYears(){ 
      int TotalYear=2014-YOB; 
      int TotalMonth=12-MOB; 
      int TotalDay=31-DOB; 
      System.out.printf("The total years of that person is %d-%d-%d",TotalYear,TotalMonth,TotalDay); 
      System.out.println("\n"); 
     } 
     public void BMI(){ 
      System.out.println("BMI values"); 
      System.out.println("Under weight:\tless than 18.5\n normal:\tbetween 18.5 and 24.9\nOverweight:\tbetween 25 and 29.9\nObese:\t30 or greater"); 
     }  
} 





public class HeartRates { 

public static void main(String[] args) { 

     Starter getvalues2=new Starter(); 
     getvalues2.setFirstName("Sachin"); 
     getvalues2.setLastName("Godara"); 
     getvalues2.setGender("Male"); 
     getvalues2.setBirth(18,6,1993); 
     getvalues2.getFirstName(); 
     getvalues2.getLastName(); 
     getvalues2.getGender(); 
     getvalues2.getDOB(); 
     getvalues2.getMOB(); 
     getvalues2.getYOB(); 
     getvalues2.getYears(); 
     getvalues2.BMI(); 
     getvalues2.BMI1(); 




     } 


} 

我的输出应该是: -

Enter all the required data 
sam 
godara 
male 
18 
6 
1993 
The total years of that person is 21-6-13 

BMI values 
Under weight: less than 18.5 
normal: between 18.5 and 24.9 
Overweight: between 25 and 29.9 
Obese: 30 or greater 
Enter the value of Height and Weight 
2 
78 
The BMI value is : 19.5 
Sachin 
godara 
male 
1861993 
+2

您的命名非常混乱,请遵循[Java命名约定](http://www.oracle.com/technetwork/java/codeconventions- 135099.html)。 – Maroun 2014-10-05 08:03:20

+0

但我不明白,先生,为什么命名如此重要,至少我的整个程序应该运行。但为什么它没有运行? – 2014-10-05 08:06:31

+1

编译器不关心命名,我们这样做。这是为了可读性。 – Maroun 2014-10-05 08:12:34

回答

2

您缺少构造函数。如果这样:

void starter(){ 
    Scanner input=new Scanner(System.in); 
    System.out.println("Enter all the required data"); 
    FirstName=input.nextLine(); 
    LastName=input.nextLine(); 
    Gender=input.nextLine(); 
    DOB=input.nextInt(); 
    MOB=input.nextInt(); 
    YOB=input.nextInt(); 
} 

是指构造函数,然后它的错误。即使构造函数是一个无效方法,它并不是这样声明的。将其更改为:

public Starter(){ 
    Scanner input=new Scanner(System.in); 
    System.out.println("Enter all the required data"); 
    FirstName=input.nextLine(); 
    LastName=input.nextLine(); 
    Gender=input.nextLine(); 
    DOB=input.nextInt(); 
    MOB=input.nextInt(); 
    YOB=input.nextInt(); 
} 

更新1种

这些方法:

getvalues2.getFirstName(); 
getvalues2.getLastName(); 
getvalues2.getGender(); 
getvalues2.getDOB(); 
getvalues2.getMOB(); 
getvalues2.getYOB(); 
getvalues2.getYears(); 

返回一个值。这并不意味着他们必须打印它。

尝试

system.out.println(getvalues2.getFirstName()); 
system.out.println(getvalues2.getLastName()); 
....//etc 

更新2

也是为什么它被赋予的总年数的那个人就是21613在 输出

这是因为这种情况发生:

System.out.printf("The total years of that person is %d%d%d",TotalYear,TotalMonth,TotalDay); 

%d%d%d意味着printf预计3 ints作为争论,并将然后彼此相邻。

我认为这会更有意义,您:

`%d%d%d` output `123` 
`%d %d %d` output `1 2 3` 
`%d-%d-%d` output `1-2-3` 

所以,你可以appropriatelly改变它。

更新3

public void BMI1(){ 
    System.out.println("Enter the value of Height and Weight"); 
    Scanner input1=new Scanner(System.in); 
    Height=input1.nextFloat(); 
    Weight=input1.nextFloat(); 
    BMI1=Weight/(Height*Height); 
    System.out.println("The BMI value is :\t"+BMI1); 
} 

从您的评论我假设你porgramm这里挂。此方法期望您在打印出某些内容之前输入2 float。因此,如果您不输入内容,它将不会得到System.out.println("The BMI value is :\t"+BMI1);

+0

我删除了void,但之后它在eclipse中显示错误返回类型的方法丢失。 – 2014-10-05 08:09:34

+0

这是因为Java是区分大小写的,并且Eclipse已经创建了一个方法,并且它缺少返回类型。你的构造函数必须和你的类完全一样。所以'公共Starter()'而不是'starter' – qbit 2014-10-05 08:11:39

+0

是的,我也使用公共,但它再次显示相同的错误。但是,如果我删除我的构造函数部分,那么为什么我的其他方法不运行,除了BMI和BMI1。 – 2014-10-05 08:15:35

1

如果这种方法被认为是构造函数:

void starter(){ 

它应该是:

public Starter(){ 

否则,它只是一个普通的类方法,当您拨打new Starter()时不会执行。

构造函数没有返回类型,Java区分大小写。

编辑:

变化:

System.out.printf("The total years of that person is %d%d%d",TotalYear,TotalMonth,TotalDay); 

到:

System.out.printf("The total years of that person is %d %d %d",TotalYear,TotalMonth,TotalDay); 

为了使输出的可读性。

+0

好吧,我用你的建议,我的构造函数正在运行,但我的其他方法不是?为什么以及为什么它会输出: - 该人的总年数是21613. – 2014-10-05 08:23:44

+0

@SachinGodara哪些方法没有运行?你怎么知道他们没有跑?并非所有的方法都会打印输出。 – Eran 2014-10-05 08:27:01

+0

基本上现在我的输出是输入所有所需的数据 萨钦 godara 雄性总年的那个人是21613 BMI值 根据重量:\t小于18.5 正常:\t 18.5之间和24.9 超重:\t和29.9之间25 肥胖:\t 30或更大 输入身高和体重 唯一的构造和BMI和BMI1正在运行的价值,但我的set和get方法不给予任何出放。 – 2014-10-05 08:29:20

相关问题