diff --git a/syamauchi/src/C020.java b/syamauchi/src/C020.java new file mode 100644 index 0000000000000000000000000000000000000000..446b00ad210cf4808610973914363a467df75e78 --- /dev/null +++ b/syamauchi/src/C020.java @@ -0,0 +1,41 @@ +package src; + +import java.math.BigDecimal; +import java.util.Scanner; + +public class C020 { + static BigDecimal PERCENTAGE = new BigDecimal("100"); + private final String foodWeight; + private final String saleFoodRatio; + private final String saleSideDishRatio; + + public C020(final String foodWeight, final String saleFoodRatio, final String saleSideDishRatio) { + this.foodWeight = foodWeight; + this.saleFoodRatio = saleFoodRatio; + this.saleSideDishRatio = saleSideDishRatio; + } + + public static void main(String[] args) { + final Scanner sc = new Scanner(System.in); + final C020 food = new C020(sc.next(), sc.next(), sc.next()); + System.out.println(food.calcUnsold()); + sc.close(); + } + + // 誤差ができるのが嫌なのでBigDecimalを使用 + public float calcUnsold() { + final BigDecimal foodWeight = new BigDecimal(this.foodWeight); + final BigDecimal saleFoodRatio = new BigDecimal(this.saleFoodRatio); + final BigDecimal saleSideDishRatio = new BigDecimal(this.saleSideDishRatio); + + final BigDecimal percentageSaleFood = saleFoodRatio.divide(PERCENTAGE); + + // food - food * percentageSaleFood + final BigDecimal unsold = foodWeight.subtract(foodWeight.multiply(percentageSaleFood)); + final BigDecimal percentageSaleSideDish = saleSideDishRatio.divide(PERCENTAGE); + // unsold - unsold * percentageSideDish + final BigDecimal allUnsold = unsold.subtract(unsold.multiply(percentageSaleSideDish)); + // + return (allUnsold.floatValue()); + } +} diff --git a/syamauchi/test/C020Test.java b/syamauchi/test/C020Test.java new file mode 100644 index 0000000000000000000000000000000000000000..b50d31fea86d8c552bdac1e8d430c6fe2cfd4f55 --- /dev/null +++ b/syamauchi/test/C020Test.java @@ -0,0 +1,63 @@ +package test; + +import static org.hamcrest.CoreMatchers.*; +import static org.hamcrest.MatcherAssert.*; +import org.junit.Test; +import src.C020; + +public class C020Test { + + @Test + public void 残り物の量を取得するテスト1() { + C020 sut = new C020("1", "80", "40"); + float expected = (float) 0.12; + float actual = sut.calcUnsold(); + + assertThat(actual, is(expected)); + } + + @Test + public void 残り物の量を取得するテスト2() { + C020 sut = new C020("10", "31", "52"); + float expected = (float) 3.312; + float actual = sut.calcUnsold(); + + assertThat(actual, is(expected)); + } + + @Test + public void 残り物の量を取得するテスト3() { + C020 sut = new C020("1", "0", "0"); + float expected = (float) 1; + float actual = sut.calcUnsold(); + + assertThat(actual, is(expected)); + } + + @Test + public void 残り物の量を取得するテスト4() { + C020 sut = new C020("1000", "100", "0"); + float expected = (float) 0; + float actual = sut.calcUnsold(); + + assertThat(actual, is(expected)); + } + + @Test + public void 残り物の量を取得するテスト5() { + C020 sut = new C020("1000", "0", "0"); + float expected = (float) 1000; + float actual = sut.calcUnsold(); + + assertThat(actual, is(expected)); + } + + @Test + public void 残り物の量を取得するテスト6() { + C020 sut = new C020("1", "0", "100"); + float expected = (float) 0; + float actual = sut.calcUnsold(); + + assertThat(actual, is(expected)); + } +}