2016-10-14 11 views
-1

私はコードを書くのが初めてです。私はベストではありませんが、なぜ自分のコードが私が設定したJUnitテストの1つをパスしていないのか分かりません。JUnitテストが失敗している理由が分かりません

public class PA3Test { 


public static void main(String[] args) { 
} 

public static int countMajority(int count0, int count1, int count2) { 
    int allVotes = (count0 + count1 + count2); 
    int halfVotes = (allVotes/2); 
    int winner = 999; 
    if (count0 >= halfVotes) { 
     winner = 0; 
    } else { 
     winner = -1; 
    } 
    if (count1 >= halfVotes) { 
     winner = 1; 
    } else { 
     winner = -1; 
    } 
    return winner; 

} 

テストでは、次のようになります。

import junit.framework.TestCase; 

public class PA3TestTest extends TestCase { 

public static void testCountMajority() { 
    assertEquals("0th param should win:", 0, 
       PA3Test.countMajority(100, 50, 40)); 
    assertEquals("1st param should win:", 1, 
       PA3Test.countMajority(50, 100, 40)); 
} 

は、それが0を返すことになっているが、それは-1を返しています。どんな助けもありがとうございます。最初の試験で

+3

関数が0を返しているはずですが、-1が返されているため、テストで関数が0を返すことをテストしているためテストに失敗しています。 – immibis

+0

@immibis質問をコメントとして繰り返すことの価値は何ですか? –

+0

@HadenSchlemmer IDEデバッガのコードをステップ実行して、予期しないことが起こっている箇所を確認しましたか? –

答えて

0


allVotes = 190
halfVotes = 50 < 95 = 95
COUNT0 = 100> 95、勝者= 0
COUNT1、勝者= -1


あなたが間違っていることを以下で試してみてください。

public static int countMajority(int count0, int count1, int count2) { 
    int allVotes = (count0 + count1 + count2); 
    int halfVotes = (allVotes/2); 
    int winner = -1; 
    if (count0 >= halfVotes) { 
     winner = 0; 
    } 
    else if (count1 >= halfVotes) { 
     winner = 1; 
    } 
    return winner; 
} 
+0

OPはとても近かったので、私は自分のヒントに基づいて自分自身でそれを理解できると思っていました。ああ... –

+0

OK今問題を理解していますが、今は "else if without"というエラーが表示されています。まだ少し混乱しています –

+0

これは、私がやろうとしていたものよりずっと簡単であり、完璧な意味を持っています、ありがとう! –

0

あなたが3つのカウントを持っているとき、あなたが2でそれを平均化している理由はわかりません。 しかし、あなたの問題のステートメントに基づいて、これはトリックを行う必要があります。

public static int countMajority(int count0, int count1, int count2) { 
    int allVotes = (count0 + count1 + count2); 
    int halfVotes = (allVotes/2); 
    int winner = -1; 
    if (count0 >= halfVotes) { 
     winner = 0; 
    } 
    if (count1 >= halfVotes && count1 > count0) { 
     winner = 1; 
    } 

    return winner; 
} 
関連する問題