我该如何做到这一点,以便当我输入 itemType 时,它会打印出实际类型而不仅仅是 Int


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";

除了已经建议的ifswitch解决方案之外,您还可以创建一个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:
        ...
}

最新更新