From 22fac2f7a0b5dda2058fc9b01073ef80a349b8fc Mon Sep 17 00:00:00 2001 From: syamauchi Date: Fri, 7 Jul 2023 13:15:25 +0900 Subject: [PATCH 1/4] =?UTF-8?q?C020=E5=9B=9E=E7=AD=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- syamauchi/src/C020.java | 42 ++++++++++++++++++++++++++++++++++++ syamauchi/test/C020Test.java | 27 +++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 syamauchi/src/C020.java create mode 100644 syamauchi/test/C020Test.java diff --git a/syamauchi/src/C020.java b/syamauchi/src/C020.java new file mode 100644 index 0000000..591589d --- /dev/null +++ b/syamauchi/src/C020.java @@ -0,0 +1,42 @@ +package src; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Scanner; + +public class C020 { + static BigDecimal PERCENTAGE = new BigDecimal("100"); + private final String food; + private final String saleFood; + private final String saleSideDish; + + public C020(final String food, final String saleFood, final String saleSideDish) { + this.food = food; + this.saleFood = saleFood; + this.saleSideDish = saleSideDish; + } + + 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 food = new BigDecimal(this.food); + final BigDecimal saleFood = new BigDecimal(this.saleFood); + final BigDecimal saleSideDish = new BigDecimal(this.saleSideDish); + + final BigDecimal percentageSaleFood = saleFood.divide(PERCENTAGE, 3, RoundingMode.HALF_UP); + + // food - food * PerceSaleFood + final BigDecimal unsold = food.subtract(food.multiply(percentageSaleFood)); + final BigDecimal percentageSaleSideDish = saleSideDish.divide(PERCENTAGE); + // unsold - unsold * saleSideDish + 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 0000000..8c036a1 --- /dev/null +++ b/syamauchi/test/C020Test.java @@ -0,0 +1,27 @@ +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)); + } +} -- GitLab From 68e2e3d37d590a7200de0c1c41ebc02c598f72b0 Mon Sep 17 00:00:00 2001 From: syamauchi Date: Fri, 7 Jul 2023 13:20:26 +0900 Subject: [PATCH 2/4] =?UTF-8?q?C020=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- syamauchi/src/C020.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/syamauchi/src/C020.java b/syamauchi/src/C020.java index 591589d..ff77abb 100644 --- a/syamauchi/src/C020.java +++ b/syamauchi/src/C020.java @@ -1,7 +1,6 @@ package src; import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.Scanner; public class C020 { @@ -29,7 +28,7 @@ public class C020 { final BigDecimal saleFood = new BigDecimal(this.saleFood); final BigDecimal saleSideDish = new BigDecimal(this.saleSideDish); - final BigDecimal percentageSaleFood = saleFood.divide(PERCENTAGE, 3, RoundingMode.HALF_UP); + final BigDecimal percentageSaleFood = saleFood.divide(PERCENTAGE); // food - food * PerceSaleFood final BigDecimal unsold = food.subtract(food.multiply(percentageSaleFood)); -- GitLab From 03c85177b9c80abede209156d7aa312496f49c0d Mon Sep 17 00:00:00 2001 From: syamauchi Date: Fri, 7 Jul 2023 13:23:59 +0900 Subject: [PATCH 3/4] =?UTF-8?q?C020=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- syamauchi/src/C020.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/syamauchi/src/C020.java b/syamauchi/src/C020.java index ff77abb..4475588 100644 --- a/syamauchi/src/C020.java +++ b/syamauchi/src/C020.java @@ -30,10 +30,10 @@ public class C020 { final BigDecimal percentageSaleFood = saleFood.divide(PERCENTAGE); - // food - food * PerceSaleFood + // food - food * percentageSaleFood final BigDecimal unsold = food.subtract(food.multiply(percentageSaleFood)); final BigDecimal percentageSaleSideDish = saleSideDish.divide(PERCENTAGE); - // unsold - unsold * saleSideDish + // unsold - unsold * percentageSideDish final BigDecimal allUnsold = unsold.subtract(unsold.multiply(percentageSaleSideDish)); // return (allUnsold.floatValue()); -- GitLab From f807ae1fba46d2869cf28d67d0f0a6de6dd5c4b3 Mon Sep 17 00:00:00 2001 From: syamauchi Date: Fri, 7 Jul 2023 15:32:07 +0900 Subject: [PATCH 4/4] =?UTF-8?q?C020=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- syamauchi/src/C020.java | 26 +++++++++++++------------- syamauchi/test/C020Test.java | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/syamauchi/src/C020.java b/syamauchi/src/C020.java index 4475588..446b00a 100644 --- a/syamauchi/src/C020.java +++ b/syamauchi/src/C020.java @@ -5,14 +5,14 @@ import java.util.Scanner; public class C020 { static BigDecimal PERCENTAGE = new BigDecimal("100"); - private final String food; - private final String saleFood; - private final String saleSideDish; + private final String foodWeight; + private final String saleFoodRatio; + private final String saleSideDishRatio; - public C020(final String food, final String saleFood, final String saleSideDish) { - this.food = food; - this.saleFood = saleFood; - this.saleSideDish = saleSideDish; + 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) { @@ -24,15 +24,15 @@ public class C020 { // 誤差ができるのが嫌なのでBigDecimalを使用 public float calcUnsold() { - final BigDecimal food = new BigDecimal(this.food); - final BigDecimal saleFood = new BigDecimal(this.saleFood); - final BigDecimal saleSideDish = new BigDecimal(this.saleSideDish); + final BigDecimal foodWeight = new BigDecimal(this.foodWeight); + final BigDecimal saleFoodRatio = new BigDecimal(this.saleFoodRatio); + final BigDecimal saleSideDishRatio = new BigDecimal(this.saleSideDishRatio); - final BigDecimal percentageSaleFood = saleFood.divide(PERCENTAGE); + final BigDecimal percentageSaleFood = saleFoodRatio.divide(PERCENTAGE); // food - food * percentageSaleFood - final BigDecimal unsold = food.subtract(food.multiply(percentageSaleFood)); - final BigDecimal percentageSaleSideDish = saleSideDish.divide(PERCENTAGE); + 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)); // diff --git a/syamauchi/test/C020Test.java b/syamauchi/test/C020Test.java index 8c036a1..b50d31f 100644 --- a/syamauchi/test/C020Test.java +++ b/syamauchi/test/C020Test.java @@ -24,4 +24,40 @@ public class C020Test { 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)); + } } -- GitLab