package Homework;
import java.util.Scanner;
public class Homework2LibraryFines {
public static void main(String[] args) {
// Variables
int cardNumber;
int age;
int overdue;
int itemType;
double overdueFine;
int fineAdjustment;
int books = 1;
int magazines = 2;
int dvd = 3;
Scanner input = new Scanner(System.in);
System.out.println("Enter patron's library card number");
cardNumber = input.nextInt();
System.out.println("Enter patron's age");
age = input.nextInt();
System.out.println("Enter item type 1.Book, 2.Magazine, 3.DVD");
itemType = input.nextInt();
System.out.println("Enter number of days overdue");
overdue = input.nextInt();
System.out.println("Enter overdue fine");
overdueFine = input.nextDouble();
System.out.println("Enter fine adjustment");
fineAdjustment = input.nextInt();
if (overdueFine == books) {
overdueFine += 0.50;
} else if (overdueFine == magazines) {
overdueFine += 0.25;
} else if (overdueFine == dvd) {
overdueFine += 1.50;
} else if (age > 70) {
overdueFine += 0;
} else if (age >= 6 && age <= 17) {
overdueFine += 1.00;
}
System.out.println(cardNumber + " is " + age + " years old " + "and has an overdue " + itemType + "." + "The "
+ itemType + " is " + overdue + " days overdue");
}
}
输出
输入读者的借书证号码
222222 输入顾客年龄
30
输入项目类型 1.书籍, 2.杂志, 3.DVD
3 输入逾期
天数 10
输入逾期罚款
2,00
输入微调
3 222222年满30岁,逾期3.逾期10天
不是那么漂亮,但它有效:
string itemName = "";
if (itemType == 1) itemName = "Book";
else if (itemType == 2) itemName = "Magazine";
else if (itemType == 3) itemName = "DVD";
打印出来时,只需将itemType替换为itemName即可。
添加 switch
语句以获取实际的String
值,具体取决于输入的数字
String item="Book";//making Book the default option
switch (itemType) {
case 1:
item = "Book";
break;
case 2:
item = "Magazine";
break;
case 3:
item = "DVD";
break;
}
并在print
语句中打印item
。
甚至是有点丑陋的ternary
状况
String item = itemType == 1 ? "Book" : itemType == 2 ? "Magazine" : itemType == 3 ? "DVD" : "Book";
除了已经建议的if
和switch
解决方案之外,您还可以创建一个enum
。这些是具有有限值的特殊类。您可以覆盖 toString()
方法来打印出您想要的任何内容。
您可以声明 itemType 和数组,并在打印时使用用户输入作为数组中的偏移量。
对于存储,
String itemTypesArr[] = {"", "Book", "Magazine", "DVD"};
现在,itemTypesArr[1]
指的是其他人的"Book"
等等。
对于打印,
System.out.println(cardNumber + " is " + age + " years old " + "and has an overdue " + itemTypesArr[itemType] + "." + "The " + itemTypesArr[itemType] + " is " + overdue + " days overdue");
一种选择是做出switch
陈述。
itemType
变量存储选项,第二个变量存储string
String itemT = "";
switch(itemType)
{
case 1:
itemT = "book"
break;
case2:
...
}