快速概述:
我正在做一个基本程序,询问用户他们想要“梦想之车”有多少门。
// 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学生,我自己学习。
答案 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()