2016-09-25 21 views
0

LOGICAL ERROR:出力は正常に動作し、第一出力を生成し、第二の出力をチェックすると、それは最初の文Kids: 6を生成しますが、2番目の文New baby, kids now: 7が生成されることはありません、代わりに、New baby, kids now: 4が生成されます。誰かがこのコードの論理エラーを教えてもらえますか?

ヒント:私に与えられたヒントは、コードの特定の行にのみ変更を加える必要があるということです。あなたはコードを見ることができますが、それは変更がcallPersonInfo.javaでのみ行われなければならないことと、これらのラインの間にもあることが言及されています//changes must be made after this line. So NO changes above this line.//changes must be made above this line. So NO changes below this line.残りのコードは問題ありません。(第一出力の一部ではないが、それは、コードの信頼性をチェックするだけでも、こので動作するはずです)

Kids: 6 
New baby, kids now: 7 
:第2出力期待

Kids: 3 
New baby, kids now: 4 

:第一出力期待

コード:(正常に実行されますが、論理エラー)

// ===== Code from file PersonInfo.java ===== 
public class PersonInfo { 
    private int numKids; 

    public void setNumKids(int personsKids) { 
     numKids = personsKids; 
     return; 
    } 

    public void incNumKids() { 
     numKids = numKids + 1; 
     return; 
    } 

    public int getNumKids() { 
     return numKids; 
    } 
} 
// ===== end ===== 

// ===== Code from file CallPersonInfo.java ===== 
public class CallPersonInfo { 
    public static void main (String [] args) { 
     PersonInfo person1 = new PersonInfo(); 

     person1.setNumKids(3); 


//changes must be made after this line. So NO changes above this line. 

     System.out.println("Kids: " + person1.getNumKids()); 

     person1.setNumKids(4); 
     System.out.println("New baby, kids now: " + person1.getNumKids()); 

//changes must be made above this line. So NO changes below this line.  

     return; 
    } 
} 
// ===== end ===== 
+1

これは非常に基本的な質問です。あなたはそれを解決している問題が何かを教えてくれますか?質問を理解する上で問題がありますか?コードは一般的なレベルで何をすべきか? – dwjohnston

+0

期待される出力2は生成されませんが、1が生成され、それは問題ありません。 – Anonymous

+0

'person1.setNumKids(3)'を 'person1.setNumKids(6)'に変更していますか?あなたが「キッズ:6」をどのように出力しているかを私は見ることができないからです。 – splrs

答えて

1

毎回numKidsの値を設定していますが、その値を増分(追加)しないでください。

setNumKids(4)の代わりにincNumKids()と電話をかけてください。最初の通話では、setNumKids()の通話回数に1を加算します。

注:疑問には明確にされていないのは、実際には静的なコードではなく、最初の「Kids:X」出力を得るためにこれを編集していることです。

+0

ありがとうございましたが、私はコードの特定の領域のみを変更するつもりです。その領域は 'CallPersonInfo 'で指定されます。java'によって変更されなければなりません。したがって、この行の上にはNOの変更はありません。そして、この行は//この行の上に変更する必要があります。したがって、この行の下ではNOが変更されます。**簡単な言葉では、この領域外の変更は行われなくてはなりません**。これは私が質問とコードで受け取ったものです。したがって、この領域だけで変更を加える必要があり、問題が解決されます。手伝ってくれますか?とても有難い! – Anonymous

関連する問題