2014-10-05 65 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

相關問題