如何在if / then语句中将字符串与多个单词进行比较?我试过这个:
System.out.println("How would you describe your active lifestyle? Sedentary, Somewhat Active, or Active?");
String lifestyle = sc.next();
double activity;
if(lifestyle.equalsIgnoreCase("sedentary"))
{
activity = 0.2;
}
else if(lifestyle.equalsIgnoreCase("somewhat active"))
{
activity = 0.3;
}
else
{
activity = 0.5;
}
但是当你输入“有点活跃”时,它会将变量活动分配给0.5。我怎样才能让它注册“有点活跃”是一件事?
答案 0 :(得分:4)
next()
上的Scanner
方法检索下一个标记,默认情况下是空格。 lifestyle
变量仅包含"somewhat"
。
通过拨打next()
来取代对nextLine()
的来电,这将获得该行的所有字词。
答案 1 :(得分:1)
但是当你输入“有点活跃”时,它会分配变量活动 至0.5
因为在"somewhat active"
next()
中只会检索somewhat
作为令牌。 next()
方法只能读取空白区域。默认分隔符为space
。您可以在您的案例中指定delimeter ie .
,它将读取令牌,直到输入中出现.
或更好地使用nextLine
方法。
Scanner sc = new Scanner(System.in);
sc.useDelimiter("\\.");//provide input as somewhat active.
答案 2 :(得分:1)
当您使用sc.next()
时,Scanner
课程只会阅读"有些"即(它只读到空白或空白)。
相反,当您使用sc.nextLine()
时,Scanner
类将读取完整的字符串为"稍微有点活跃"。
通常,如果您只想使用next();
方法只读一个单词。如果要读取一行(包括空格的多个单词),请使用nextLine();