我正在上Java入门课程,目前没有人可以寻求帮助。

该程序很简单,您输入了详细信息,该程序将为您提供汽车保险的报价。


该程序应该为18-70岁之间的人提供引号。此外,该程序还应该打印一条消息,说明他们不能使用引号。


这是我写的

    System.out.print("Please enter the age of the driver: ");
    age = Genio.getInteger();
    if ( age >18 || age < 70)
    {
        switch (age)
        {
            case 17: case 18: case 19:
            addition = 460.00;
            quote = premium + addition;
            return quote;

            case 20: case 21:
            addition = 280.00;
            quote = premium + addition;
            return quote;

            case 22: case 23: case 24: case 25:
            addition = 180.00;
            quote = premium + addition;
            return quote;

            case 26: case 27: case 28:
            addition = 140.00;
            quote = premium + addition;
            return quote;

            case 60: case 61: case 62: case 63: case 64: case 65:
            addition = 85.00;
            quote = premium + addition;
            return quote;

            case 66: case 67: case 68: case 69:
            addition = 150.00;
            quote = premium + addition;
            return quote;

            case 70: case 71: case 72: case 73: case 74: case 75: case 76: case 77: case 78: case 79:
            addition = 300.00;
            quote = premium + addition;
            return quote;

            case 80: case 81: case 82: case 83: case 84: case 85:
            addition = 800.00;
            quote = premium + addition;
            return quote;

            default:
            quote = 400.00;
            return quote;

        }
    } else {
         System.out.print("Your are too young to apply for a premium.  Sorry");
        }

    return age;


我无法想象为什么这行不通。当我输入无效的年龄(例如12岁)时,程序将返回默认报价£400。当我删除默认案例时,它将返回报价为£12。因此,它似乎完全忽略了if else循环。

(我知道切换大小写是一种无效的方法,但这是任务的一部分。)


该程序应要求以“ MR”,“ MRS”或“ MS”的形式输入用户标题。应该拒绝任何不符合此要求的内容,并要求其他输入。除了程序总是将第一个输入读取为错误(无论是否存在)之外,我大部分时间都可以使用它。然后,当您重新输入标题时,它会按预期执行。


例如。我输入MR作为标题。

程序打印“无效响应。请使用'MR','MRS'或'MS'请输入您的标题”

我再次输入MR。该程序将进入下一个阶段。

我创建了一种方法来验证我在此处编写的标题。

public String validateTitle(String title)
{
    System.out.print("Please enter your title ");
    title = Genio.getString();
    title = title.toUpperCase();
    do
    {
        if(title.equals("MR") && (title.equals("MRS") && (title.equals("MS"))))
        {
            return title;
        }
    }while((title.equals("MR") && (title.equals("MRS")) && (title.equals("MS"))));

    do
    {
        System.out.print("Invalid Response.  Use 'MR', 'MRS' or 'MS' ");

        System.out.print("Please enter your title ");
        title = Genio.getString();

        if((!title.equals("MR") && (!title.equals("MRS")) && (!title.equals("MS"))))
        {
            System.out.println("Invalid Response.  Use 'MR', 'MRS' or 'MS' ");
        }
        if(title.equals("MR") && (title.equals("MRS") && (title.equals("MS"))))
        {
            break;
        }
    }while((!title.equals("MR") && (!title.equals("MRS")) && (!title.equals("MS"))));
    return title;
}


谁能发现问题所在?


最后,我有一个问题,拒绝一个字符串的空输入。该程序当前将接受空输入的“姓氏”和“姓氏”。而应该要求用户为这些字段输入内容。我创建了两个单独的方法,一个用于验证每个名称。我在该网站上找到了一段我认为会有所帮助的代码,但似乎没有任何作用。


这些是方法

public String validateForename(String forename)
{
    System.out.print("Please enter your forename ");
    forename = Genio.getString();
    forename = forename.toUpperCase();

    if(forename != null && !forename.isEmpty())
        System.out.println("Invalid Response.");

    return forename;
}

public String validateSurname(String surname)
{
    System.out.print("Please enter your surname ");
    surname = Genio.getString();
    surname = surname.toUpperCase();

    if(surname != null && !surname.isEmpty())
        System.out.println("Invalid Response.");

    return surname;
}


我采用的代码是if(xx!= null &&!xx.isEmpty())。我以为我需要删除“!”,但这样做会阻止程序编译。有任何想法吗?

我很抱歉提出这个要求,但今天没有老师来解释我要去哪里。

最佳答案

1个

if ( age >18 || age < 70)


是错误的,因为12小于70

您需要说和(&&):

if ( age >18 && age < 70)


但是正好是18或70也是如此:

if (age >= 18 && age <= 70)


2

同样,您对&&||感到困惑。

if(title.equals("MR") && (title.equals("MRS") && (title.equals("MS"))))


读取:如果title等于mr且title等于mrs且title等于ms。

title不能全部是这些。

3

if(surname != null && !surname.isEmpty())
    System.out.println("Invalid Response.");


您的意思是说姓氏为空或姓氏为空:

if (surname == null || surname.isEmpty())
    System.out.println("Invalid Response.");

关于java - 在Java入门类(class)中学习do-while和if-else循环以及字符串验证方面的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27983879/

10-12 22:11