Задача: 04 Квартално Магазинче ( 03.3 PB-Java-Nested-Conditional-Statements-Lab)
import java.util.Scanner;
public class SmallShop {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String product = scan.nextLine();
String town = scan.nextLine();
double quantity = Double.parseDouble(scan.nextLine());
double price = 0;
switch (product) {
case "coffee":
switch (town) {
case "Sofia":
price = 0.5;
break;
case "Plovdiv":
price = 0.4;
break;
case "Varna":
price = 0.45;
break;
}
break;
case "water":
switch (town) {
case "Sofia":
price = 0.8;
break;
case "Plovdiv":
case "Varna":
price = 0.7;
break;
}
break;
case "beer":
switch (town) {
case "Sofia":
price = 1.2;
break;
case "Plovdiv":
price = 1.15;
break;
case "Varna":
price = 1.10;
break;
}
break;
case "sweets":
switch (town) {
case "Sofia":
price = 1.45;
break;
case "Plovdiv":
price = 1.30;
break;
case "Varna":
price = 1.35;
break;
}
break;
case "peanuts":
switch (town) {
case "Sofia":
price = 1.6;
break;
case "Plovdiv":
price = 1.5;
break;
case "Varna":
price = 1.55;
break;
}
break;
}
double order = price * quantity;
System.out.println(order);
}
}
Резултататите са ми :
water
Plovdiv
3
2.0999999999999996
при показания от условията:
вход |
изход |
|
water Plovdiv 3 |
2.1 |
В лекцията задачата беше решена в комбинация:
if (...) {
switch (...):
case....
break;
} else if (....)
{
switch (...):
case....
break;
.....
И резулатата нямаше такива аномалии, но доколото си спомням от април или март лекцията проблем и невъзможност на double да се ползва в switch конструкция. Заради него ли се получва? Променливата нали price само променя ст-ст според условието? Не се създава в switch. Защо в лекцията се получава без въпросните деления с отклонения на ниво процесор .00000001?