当前位置: 首页 > 知识库问答 >
问题:

Java作业用户输入问题[已关闭]

范甫
2023-03-14

我有一个课堂作业,用扫描器读取数据

import java.util.Scanner;

public class Project23
{
    public static void main(String[] args)
    {
        // Declarations and instantiations.
        Scanner scan = new Scanner(System.in);
        String any = "";
        boolean more = false;
        double purchase = 0.0;

        // Ask if user would like to run program?
        System.out.print("Do you have any purchases? Y/N?: ");

        // Ready value into string.
        any = scan.nextLine();
        System.out.println();

        // If any is equal to y or Y it will set the value of more to true
        // this runs the while statement below.
        more = any.toUpperCase().equals("Y");

        // While more is still true continue to run the code within the brackets.
        while (more)
        {
            System.out.print("Please input purchase amount: ");
            purchase += scan.nextDouble();
            System.out.println();

            System.out.print("Do you have any more purchases Y/N?: ");
            any = scan.nextLine();
            System.out.println();

            more = any.toUpperCase().equals("Y");
        }

        if (purchase >= 2500)
            System.out.println("Purchase >= 2500");
        else
            System.out.println("Purchase < 2500");
    }
}

底部的部分只是为了测试我是否所有的信号都正常运行。但是,我安装的while循环似乎不想继续运行多次。它将接受一个值,然后如果我说是,我有更多的值(y或y),它将退出并打印任何一个胸部

共有3个答案

卫成和
2023-03-14

这对我来说似乎很好。。。

boolean more = true;
while (more) {

    System.out.print("Do you have any more purchases Y/N?: ");
    String any1 = scan.nextLine();
    System.out.println();
    if (any1.equalsIgnoreCase("y")) {
        more = true;
    } else {
        more = false;
    }

    System.out.println(more);

}

这有点吓到我了,因为我肯定没什么区别

while(more==true)不是必需的while(more)说了同样的话。

if(any1.等于(“y”)|| any1。equals(“Y”)不是必需的,如果(any1.equalsIgnoreCase(“Y”)将执行相同的操作

况安然
2023-03-14

通过在调试器下运行应用程序或添加一些诊断跟踪打印,您应该能够自己解决这个问题;e、 g.在适当的点上进行类似的操作。

    System.out.println("any is ==>'" + any + "'<==");

(我打赌这将表明任何都不包含您期望的内容…)

我强烈建议您学会调试自己的代码,而不是请求其他人帮助。这是专业软件工程师的关键技能。

长孙阳焱
2023-03-14

基本上发生的事情是,当你读双scan.next双(),你只读双,但是会有ENDLINE字符,当你打回车键的流,不被scan.next双()读取。因此,当您到达any1=scan.nextLine()时,它读取不等于Y或y的尾行字符。作为一个结果,它退出了虽然循环。纠正你的代码像这样,只是使更改一行,你正在阅读doubel:

while(more){

    System.out.print("Please input purchase amount: ");
    purchase+=Double.parseDouble(scan.nextLine());
    System.out.println();
    System.out.print("Do you have any more purchases Y/N?: ");
    // scan.nextLine();
    String any1=scan.nextLine();
    System.out.println();       
    more = any1.equals("y") || any1.equals("Y");//Shortened :)
}
 类似资料:
  • 问题内容: 我有一个班级任务要使用扫描仪读取数据。 最下面的部分是对我的测试,以检查是否一切正常。但是,虽然我已设置了while循环,但似乎不想继续运行一次以上。它会取一个值,然后如果我说是,我有更多的值(y或Y),它将退出并打印两个笨蛋 问题答案: scan.nextLine()时,它将读取不等于Y或y的结束符。结果,它退出了while循环。像这样更正您的代码,只需更改您正在阅读doubel的一

  • 我努力解决问题,我真的很接近,但我很困惑为什么我的程序似乎跳过,没有读取输入学生姓名部分我的输入。当学生数为1时,似乎也有这个问题。任何帮助都将不胜感激!:]

  • 我需要一种允许用户输入团队名称和团队成员名称的方法。我试过使用扫描仪,但由于我对Java的经验不足,它无法正常工作。我只想让一个用户输入一个团队名称和四个团队成员的名字。我将这些变量公之于众,但我不知道如何向它们输入数据,因为它们在单独的类中。 这是密码 main类导入java.util.Scanner;公共类Main{

  • null 有没有一种方法可以根据列表中的项目为用户输入设置自动建议?我只希望用户输入一个与列表中的一个项目匹配的字符串。例如,如果某人键入'gre','green'就会弹出,他们会知道根据他们键入的内容,唯一的选项是'green',而不是'greens'。 谢啦! 编辑:只是为了澄清:我所需要的是程序显示哪些选项是可用后,用户在每个字母键入。因此,如果他们键入'g',它将只显示'green'作为剩

  • 编辑问题以包括所需的行为、特定的问题或错误,以及重现问题所需的最短代码。这将帮助其他人回答这个问题。 我正在做一个待办事项列表程序。 我想让用户可以输入日期、时间和关于。我已经有日期了。我缺少的是时间。 但我有很多例外。我有什么遗漏吗?

  • 我制作了一个程序来获取用户输入并将其传递出去,但出于某种原因,scanner类和下一行甚至不等待用户获取输入,而是跳过了整个获取输入部分。下面是我的代码: 基本上,程序就结束了,我没有输入任何输入,我找不到一个解决方案或解释这一点。