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

它到达if语句并停止工作,我在做什么(java新)[duplicate]

祁乐邦
2023-03-14
import java.util.Scanner;

public class JavaMovies {
      Scanner det = new Scanner(System.in);
      int age = det.nextInt();

public static void main(String[] args){
    calculator();


}


public static void calculator(){

Scanner det = new Scanner(System.in);

    String rMovie = "Attack of the nerds";
    String mMovie = "Nerd lyfe";
    String pgMovie = "Nerd adventures";
    String gMovie = "Nerd playtime";
    System.out.println("These are the movies that are playing this weekend"
            + rMovie
            + mMovie
            + pgMovie
            + gMovie);
    System.out.println("Please input your age");
   int age = det.nextInt();


System.out.print("Input the movie you wish to see:");
    String x = det.nextLine();                             //Program ends here...

    if(x.equals("Attack of the nerds") & age > 17){
        System.out.println("You can see Attack of the nerds");

    }else if(x.equals("Attack of the nerds") & age < 18){
        System.out.println("You can see attack of the nerds!");

    }if(x.equals("Nerd lyfe")& age > 15){
        System.out.println("You can see Nerd lyfe");

    }else if(x.equals("Nerd lyfe")& age < 16){
        System.out.println("You can not see Nerd lyfe");

    }if (x.equals("Nerd adventures")& age > 10){
        System.out.println("You can see Nerd adventures");

    }else if(x.equals("Nerd adventures")& age < 11){
        System.out.println("You can not see Nerd adventures");

    }if(x.equals("Nerd playtime")& age > 5){
        System.out.println("You can see Nerd playtime");

    }else if(x.equals("Nerd playtime")& age < 6){
        System.out.println("You can not see Nerd playtime");


    }
}
}

在if语句开始之前一切正常,我可以做什么来修复这个问题呢?

共有1个答案

陈泰宁
2023-03-14

我认为问题是nextint没有用完整行。如果在提示输入年龄时键入32nextint将使用32字符,但输入字符串中仍保留一个换行符。然后,当您调用nextline时,效果是返回当前行中剩余的所有内容,直到下一个换行。由于当前行仍有换行符,这将导致字符串x=det.nextLine()x设置为空字符串。

在提示播放电影之前,请尝试det.nextline();。(您不需要将其赋值给变量;只需将结果丢弃。)这将导致扫描程序消耗换行符,以便下一个nextline()将获得另一行输入。

 类似资料:
  • 我正在通过conda安装pymc,它告诉我更新一些文件,所以没有问题。然而,在更新后,它给出了一个OSError,现在,我不能访问任何conda构建命令。现在,当我键入任何conda命令时,它会给我

  • 我试图更新我的网站从使用Laravel 5.4到Laravel 7.3。在大多数情况下,它是有效的,但看起来我的自定义门面由于某种原因不起作用... 无论何时使用一个,我都会得到以下错误。。。 这里是相关文件... 应用\助手\MyLogHelper.php 应用\提供商\MyLogServiceProvider.php App\Facades\MyLog。php 在app.php.... 提供商

  • 我在XAMPP中启动MYSQL时遇到了问题。Apache启动正常,但MYSQL不断报告意外关机。 我被引导删除,它在此之后工作,但它删除了我所有的数据库,并且MYSQL在我重新启动机器后再次停止工作。 [ERROR]INNODB:试图打开以前打开的表空间。以前的表空间MYSQL/INNODB_INDEX_STATS在FILEPATH:.\MYSQL\INNODB_INDEX_STATS.IBD中使

  • 问题内容: 我是Java的新手,正在尝试学习速记语句的概念。 我想出了下面的代码。但是,该代码将无法编译,并在(即?:)语句旁边显示错误。 有人可以告诉我为什么它不起作用吗? 对不起,如果我的问题对某些人听起来很愚蠢。我是Java新手。 在此先感谢您的帮助! 问题答案: 三元表达 是一个 表达式 ,而不是一个语句,因此不能在需要语句的地方使用。 您可以这样写: 因为这是一个声明。

  • 我有一个在dev环境下运行的grails应用程序,我毫无问题地完成了这场战争 在服务器中,我使用“sudo service tomcat7 stop”命令停止服务,并将war文件放入服务器文件夹“/var/lib/tomcat7/webapps”,然后使用命令“sudo service tomcat7 start”再次启动服务器。为了检查服务器的状态,我运行“sudo service tomcat

  • 我制作了这个简单的GUI程序,它可以计算特定字符序列的元音和辅音。计数器还可以,但是我对if-else语句有一个问题,当那个字符既不是元音也不是辅音时,我必须显示一条消息...代码如下: 它看起来是这样的: 我输入了一个没有任何特殊字符或数字的字符“序列”。但它仍然显示消息,其中它有元音和辅音以外的其他字符。if-else语句有问题吗?感谢您的帮助:)