用户输入和扫描仪有问题

时间:2016-03-22 01:47:26

标签: java

快速概述:

我正在做一个基本程序,询问用户他们想要“梦想之车”有多少门。

// i can get the children node, but is there any way to access the parent nodes"
// @decision.next.each.map{|r|...}
// like:
// @decision.parents...

class Decision
  include Neo4j::ActiveNode

  property :title, type: String
  property :text, type: String
  property :ending, type: Boolean, default: nil
  property :rooting, type: Boolean, default: nil

  has_many :out, :next, rel_class: :Action, model_class: :Decision

  validates_uniqueness_of :input

end

class Action
  include Neo4j::ActiveRel
  before_save :check_input_type

  from_class :Decision
  to_class   :Decision
  type 'action'

  property :input, type: Integer
  property :expected_input, type: Integer

  validates_presence_of :input
  creates_unique :none

end

当我提示用户他们想要他们的车有多少门时,他们只有两个选择,输入数字2或4.但如果他们输入任何其他数字他们不能回去输入2或4。如果他们的输入首先输入不是2或4,我怎样才能让我的程序允许用户输入正确的数字?

很抱歉,如果含糊不清,我没有教科书,因为我目前不是CS学生,我自己学习。

2 个答案:

答案 0 :(得分:1)

这是一种可能性。请注意,numbOfDoor设置为0,测试检查它不是可接受的值之一,而nextInt 是否在循环中。没有必要有休息陈述。

int numbOfDoor = 0;
while(numbOfDoor != 2 && numbOfDoor != 4){
    numbOfDoor = scanDoor.nextInt();
    if(numbOfDoor == 4){
         System.out.println("Okay, so you want " + numbOfDoor);
    } else if(numbOfDoor == 2){
        System.out.println("Okay, so you want " + numbOfDoor);    
    } else{
        System.out.println("Select either 2 or 4 doors!");
    }
}

您也可以使用

int numbOfDoor = 0;
while( true ){
    numbOfDoor = scanDoor.nextInt();
    if(numbOfDoor == 4){
         System.out.println("Okay, so you want " + numbOfDoor);
         break;
    }
    // More if + println + break
}

这里你需要休息声明。

答案 1 :(得分:0)

问题的可能解决方案如下。它不是最优雅的解决方案,但它几乎是您的代码中的逐字逐句。从这个例子中学习的一个好方法是在输入周围使用while循环,这样就可以提高代码的健壮性。

int numbOfDoor = scanDoor.nextInt();
    while (numbOfDoor != 2 || numbOfDoor != 4)
    {
        System.out.print("Invalid choice, try again: ");
        numbOfDoor = scanDoor.nextInt();

        if (numbOfDoor == 2 || numbOfDoor == 4)
            break;

    }

    if(numbOfDoor == 4)
    {
       System.out.println("Okay, so you want " + numbOfDoor);

    }


    else if(numbOfDoor == 2)
    {
        System.out.println("Okay, so you want " + numbOfDoor); 
    }

    else
    {
        System.out.println("Select either 2 or 4 doors!");

    }
scanDoor.close()