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

程序不提示输入字符串,但对其他数据类型提示

乐正烨熠
2023-03-14

在这个程序中,我需要用户输入是/否以在另一个数组类中设置。但字符串输入不起作用。我用整数尝试了它,它有效,但对字符串不起作用。

包装airliner.boarding.system;

import java.util.Scanner;

公共舱登机{

private boolean firstClass[];
private boolean economyClass[];
private static Scanner input ; 


public BoardPlane(){
    firstClass = new boolean[5];
    economyClass = new boolean[5];
    input = new Scanner(System.in);
}

public void setSeat(int seatClass){
    if(seatClass == 1){
        fillFirstClass();
    }else if(seatClass == 2){
        fillEconomyClass();
    }
}

private void fillEconomyClass(){
    for(int counter = 0; counter < economyClass.length; counter++){
        if(economyClass[counter] == false){
            economyClass[counter] = true;
            System.out.println("Your seat number is "+(++counter)+" in the economy class");
            break;
        }else if(counter == 4){
            System.out.println("Economy class is filled. is it okay to place you in first class? YES/NO: ");
            String choice = input.nextLine();
            choice = choice.toUpperCase();
            if(choice.equals("YES")){
                 switchSeats(2);
            }else{
                System.out.println("Next flight leaves in three hours.");
            }
        }
    }
}

private void fillFirstClass(){
    for(int counter = 0; counter < firstClass.length; counter++){
        if(firstClass[counter] == false){
            firstClass[counter] = true;
            System.out.println("Your seat number is "+(++counter)+" in the first class");
            break;
        }else if(counter == 4 ){
            System.out.println("First class is filled. is it okay to place you in economy class? YES/NO:");
            String choice = input.nextLine();
            choice = choice.toUpperCase();
            if(choice.equals("YES")){
                 switchSeats(1);
            }else{
                System.out.println("Next flight leaves in three hours.");
            }

        }
    }
}

private void switchSeats(int i){
    if(i == 1){
        for(int counter = 0; counter < economyClass.length; counter++){
            if(economyClass[counter] == false){
                economyClass[counter] = true;
                System.out.println("Your seat number is "+(++counter)+" in the economy class");
                break;
            }else if(counter == 4){
                System.out.println("Economy class is filled");
            }
        }
    }else if(i == 2){
        for(int counter = 0; counter < firstClass.length; counter++){
            if(firstClass[counter] == false){
                firstClass[counter] = true;
                System.out.println("Your seat number is "+(++counter)+" in the first class");
                break;
            }else if(counter == 4){
                System.out.println("First class is filled");
            }
        }
    }
}

public static void main(String [] args){
    BoardPlane plane = new BoardPlane();
    for(int i = 0; i <= 10; i++){
        System.out.println("Enter 1 for first class and 2 for economy class: ");
        int userInput = input.nextInt();
        plane.setSeat(userInput);
    }
}

}

共有2个答案

东方俊材
2023-03-14

我有同样的问题,当你使用扫描仪,并把信息与System.out.println(),换行符不能正常工作。我不知道为什么?!当你输入=新的扫描仪(System.in)后,你的信息在控制台,它的工作是正确的。

但是你可以做一个给用户输入的方法,用这个方法做一个这样的feresh扫描器:

publis静态字符串getUserInput(字符串消息){

System.out.println(消息);

输入=new扫描仪(System.in);

return input.nextLine();

}

刁星渊
2023-03-14

当您调用 nextInt() 时,它只读取数字,而不读取该行的其余部分,也不会读取您键入的新行。

这意味着,如果您稍后调用< code>nextLine(),它将读取数字后面的内容,即很可能什么都没有。

一个简单的解决方法是忽略数字后面的行的其余部分。

int userInput = input.nextInt();
input.nextLine(); // ignore the rest of the line.
 类似资料:
  • 不知道我错过了什么。 我的Pojo- 契约-

  • 问题内容: 我想知道是否可以在Chrome和Firefox中显示刻度线以输入数字?我在这个问题上能找到的最接近的东西是这个。 问题答案: 当涉及到样式时,输入范围仍然有些噩梦。这就是说,在各大浏览器中显示刻度线 是 可能的,有点苦劳和浏览器的特定解决方案。 Internet Explorer / Edge 如您所知,默认情况下,如果添加HTML 属性,Internet Explorer将显示刻度。

  • 问题内容: 因此,在PHPDoc中,可以在成员变量声明上方指定以提示其类型。然后是一个IDE,例如。PHPEd将知道它正在使用哪种类型的对象,并且能够为该变量提供代码见解。 这非常有用,直到我以后需要遍历这些对象时,我需要对一组对象进行相同的操作才能获得正确的提示。 因此,有没有一种方法可以声明一个PHPDoc标记以指定成员变量是s 的数组?例如,数组是不够的,而且似乎无效。 问题答案: 采用:

  • 2.3.4 字符串类型与其他类型的转换 应用程序中有时需要将字符串类型的数据转换成其他数据类型,或者相反。下面介绍Python 中如何实现这些功能。 首先看函数 eval()。eval 函数接收一个字符串,并将该字符串解释成 Python 表达式 进行求值,最终得到特定类型的结果值;如果字符串无法解释成合法的 Python 表达式则报 错(如语法错误、未定义变量错误等)。例如: >>> eval(

  • 似乎没有类输入类型'提交'在Font-真棒。是不是可以使用一些类从字体真棒按钮输入?我已经在我的应用程序中的所有按钮上添加了图标(实际上链接到twitter-bootstrap的类btn),但是不能在输入类型提交上添加图标。 或者,如何使用此代码: html: (这是我从HTML中获得的:如何制作一个包含文本图像的提交按钮?)?

  • 问题内容: 我有一个长的JSON字符串,表示从WCF服务返回的string []数组。数组元素只是字符串,不是对象。这是返回数据的示例 我不介意包含在字符串中的索引,但是我需要将字符串解析为Android中的ArrayList,以便可以将其调整为ListView。 由于从技术上讲这些不是JSONObjects,我如何遍历它们并从每个数组元素中提取字符串? 问题答案: 这是有效的JSON字符串数组,