我对这里真正基本的东西感到沮丧..扫描仪只是没有做我想做的事情,我不知道为什么,如果有人能帮助我,我真的很感激
所以我正在尝试编写基本库存,我希望扫描程序检查是否输入了有效的构建器名称。字符串变量存储用户输入的单词,如果输入了无效的构建器名称,我只希望该字符串变量等于“ANY”。发生的事情是 - 字符串出现正确(按照我想要的大写字母)和“Any”一样,它不应该!,当输入无效的东西时,什么都不打印(它应该打印“Any”)< / p>
我做了一个简单的SSCCE:
import java.util.Scanner;
public class SSCCE {
public static void main(String[] args)
{
System.out.println("Enter a builder name: ");
Scanner scan = new Scanner(System.in);
//scan.useDelimiter("\\z"); // count a blank entry (end of input)
String entry_1 = scan.next();
if (entry_1.equalsIgnoreCase("FENDER")
|| entry_1.equalsIgnoreCase("MARTIN")
|| entry_1.equalsIgnoreCase("GIBSON")
|| entry_1.equalsIgnoreCase("COLLINGS")
|| entry_1.equalsIgnoreCase("OLSON")
|| entry_1.equalsIgnoreCase("RYAN")
|| entry_1.equalsIgnoreCase("PRS"))
{
entry_1 = entry_1.toUpperCase();
System.out.println(entry_1);
}
// if (entry_1.equals(entry_1.toLowerCase())
// || entry_1.equalsIgnoreCase(entry_1)
// && (entry_1.equalsIgnoreCase("FENDER")
// || entry_1.equalsIgnoreCase("MARTIN")
// || entry_1.equalsIgnoreCase("GIBSON")
// || entry_1.equalsIgnoreCase("COLLINGS")
// || entry_1.equalsIgnoreCase("OLSON")
// || entry_1.equalsIgnoreCase("RYAN") || entry_1
// .equalsIgnoreCase("PRS")))
// {
// entry_1 = entry_1.toUpperCase();
// }
if (!entry_1.equalsIgnoreCase("FENDER")
|| !entry_1.equalsIgnoreCase("MARTIN")
|| !entry_1.equalsIgnoreCase("GIBSON")
|| !entry_1.equalsIgnoreCase("COLLINGS")
|| !entry_1.equalsIgnoreCase("OLSON")
|| !entry_1.equalsIgnoreCase("RYAN")
|| !entry_1.equalsIgnoreCase("PRS")) {
entry_1 = "ANY";
System.out.println(entry_1);
}
}
}
编辑: 感谢所有的回复,现在我只是遇到scan.useDelimiter(“\ z”)的问题; 什么都没有输入它应该说“任何”,所以它确实如此,但现在它总是会说“任何”,即使是正确的输入
答案 0 :(得分:3)
您的第二个if语句,您要检查!entry_1
等,应该使用&&
而不是||
。
"FENDER"
会为true
等返回!entry_1.equalsIgnoreCase("MARTIN");
,在||
比较列表中,只有其中一个必须true
才能生成整件事归true
。
答案 1 :(得分:0)
如果条件为else,只需更改整秒;
if (entry_1.equalsIgnoreCase("FENDER")
|| entry_1.equalsIgnoreCase("MARTIN")
|| entry_1.equalsIgnoreCase("GIBSON")
|| entry_1.equalsIgnoreCase("COLLINGS")
|| entry_1.equalsIgnoreCase("OLSON")
|| entry_1.equalsIgnoreCase("RYAN")
|| entry_1.equalsIgnoreCase("PRS"))
{
entry_1 = entry_1.toUpperCase();
System.out.println(entry_1);
}
else {
entry_1 = "ANY";
System.out.println(entry_1);
}
答案 2 :(得分:0)
在第二个if
中,保证entry_1
不是一个案例或者它不是另一个案例或者......逻辑是不正确的。你需要“和”,&&
:
if (!entry_1.equalsIgnoreCase("FENDER")
&& !entry_1.equalsIgnoreCase("MARTIN")
&& !entry_1.equalsIgnoreCase("GIBSON")
&& !entry_1.equalsIgnoreCase("COLLINGS")
&& !entry_1.equalsIgnoreCase("OLSON")
&& !entry_1.equalsIgnoreCase("RYAN")
&& !entry_1.equalsIgnoreCase("PRS")) {
entry_1 = "ANY";
System.out.println(entry_1);
}
但是,将它作为if
附加到第一个else
条件会更简单:
if (entry_1.equalsIgnoreCase("FENDER")
|| entry_1.equalsIgnoreCase("MARTIN")
|| entry_1.equalsIgnoreCase("GIBSON")
|| entry_1.equalsIgnoreCase("COLLINGS")
|| entry_1.equalsIgnoreCase("OLSON")
|| entry_1.equalsIgnoreCase("RYAN")
|| entry_1.equalsIgnoreCase("PRS"))
{
entry_1 = entry_1.toUpperCase();
System.out.println(entry_1);
}
else
{
entry_1 = "ANY";
System.out.println(entry_1);
}
答案 3 :(得分:0)
您需要将第二个if语句从使用||
更改为&&
:
if (!entry_1.equalsIgnoreCase("FENDER")
&& !entry_1.equalsIgnoreCase("MARTIN")
&& !entry_1.equalsIgnoreCase("GIBSON")
&& !entry_1.equalsIgnoreCase("COLLINGS")
&& !entry_1.equalsIgnoreCase("OLSON")
&& !entry_1.equalsIgnoreCase("RYAN")
&& !entry_1.equalsIgnoreCase("PRS")) {
如果使用||
,则if语句本身只需要其中一个为true,并使ANY
显示为输出。使用&&
所有语句必须在if语句执行之前评估为true并显示ANY
答案 4 :(得分:0)
在第二个if()中使用&amp;&amp;不是||。这就是全部;)