如果用户输入不符合条件,return 消息
If user input doesn't meet conditions, return message
所以我真的是 Java 的新手,我想做的是让用户输入一个关键字,该关键字将传递给不同的条件。如果关键字以"c"开头,就会执行cmethod。如果关键字以"n"开头,就会执行nmethod。
问题是,如果用户没有输入以 "c" 或 "n" 开头的内容,我还想显示一条消息。这是我能够想通的(我知道这段代码不会起作用)
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
Scanner choices = new Scanner(System.in);
if (choices.next().startsWith("c")) {
cmethod();
}
else {
nmethod();
}
//how do I execute the code below if none of the conditions are met?
else {
System.out.println("Keyword is wrong.");
}
}
编辑: 尝试使用 else if,但随后要执行 nmethod(),用户必须输入 "n" 两次。
else
关键字正是您所需要的。你应该用什么来解决你的问题是else if
。为避免读取 if
之间的另一个输入,只需将 choices.next()
存储在一个变量中,然后在 if
s 语句中调用此变量。
String entry = choices.next();
if (entry.startsWith("c")) {
cmethod();
}
else if (entry.startsWith("n")) {
nmethod();
}
else {
// default behaviour if wrong entry
}
仅当输入不是'c'而为'n'时才会调用nmethod(),如果满足其中的none,则进入else
部分。
您必须将 next()
提取到一个变量。如果您不这样做,next()
将始终 return 当前关键字并转到下一个关键字。
此外,如果要检查另一个关键字,则必须使用 else if
。
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
Scanner choices = new Scanner(System.in);
String keyword = choices.next();
if (keyword.startsWith("c")) {
cmethod();
} else if (keyword.startsWith("n")) {
nmethod();
} else {
System.out.println("Keyword is wrong.");
}
}
即使您在此处提供了一些可行的解决方案,但没有人谈论真正简单的 switch
语句似乎很奇怪。
基本上:
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
Scanner choices = new Scanner(System.in);
switch(choices.next().charAt(0)) {
case 'c':
cmethod();
break;
case 'n':
nmethod();
break;
default:
System.out.println("Keyword is wrong.");
}
}
这与其他答案有关 next()
函数仅计算一次这一事实。
在可以传递方法名的地方使用反射,如果方法存在就会找到它,否则会抛出异常,在你可以显示消息的地方。
java.lang.reflect.Method method;
try {
method = this.getClass().getMethod(methodName, param1.class,
param2.class, ..);
} catch (SecurityException e) { ... }
catch (NoSuchMethodException e) { ... }
尝试在下面的测试示例中输入正确和错误的方法名称的示例。
public class Test {
public static void main(String[] args) {
Object obj = new Test();
java.lang.reflect.Method method;
try {
method = obj.getClass().getMethod("tryone1");
System.out.println("Found");
} catch (SecurityException e) {
System.out.println(" SecurityException Found");
} catch (NoSuchMethodException e) {
System.out.println("Not Found");
}
}
public void tryone() {
// TODO Auto-generated method stub
}
public void trytwo() {
// TODO Auto-generated method stub
}
}
请根据您的需要自定义上述示例。例如,如果 c 作为参数出现,则 String methodname= arg[0]+"method" 并在 getMethod("tryone1") 方法中作为方法参数名称传递。
尝试:
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try{
String s = br.readLine();
if (s.startsWith("c")) {
System.out.println("c");
System.exit(1);
}
if (s.startsWith("n")){
System.out.println("n");
System.exit(1);
}else {
System.out.println("Keyword is wrong.");
}
}catch(Exception e){
e.printStackTrace();
}
}
对我有用,希望对你有用。
另一种方法:使用 switch-case
String s =choices.next();
char first = s.charAt(0);
switch(first){
case 'c': cmethod(); break;
case 'n':nmethod(); break;
default : System.out.println("Keyword is wrong.");
}
所以我真的是 Java 的新手,我想做的是让用户输入一个关键字,该关键字将传递给不同的条件。如果关键字以"c"开头,就会执行cmethod。如果关键字以"n"开头,就会执行nmethod。 问题是,如果用户没有输入以 "c" 或 "n" 开头的内容,我还想显示一条消息。这是我能够想通的(我知道这段代码不会起作用)
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
Scanner choices = new Scanner(System.in);
if (choices.next().startsWith("c")) {
cmethod();
}
else {
nmethod();
}
//how do I execute the code below if none of the conditions are met?
else {
System.out.println("Keyword is wrong.");
}
}
编辑: 尝试使用 else if,但随后要执行 nmethod(),用户必须输入 "n" 两次。
else
关键字正是您所需要的。你应该用什么来解决你的问题是else if
。为避免读取 if
之间的另一个输入,只需将 choices.next()
存储在一个变量中,然后在 if
s 语句中调用此变量。
String entry = choices.next();
if (entry.startsWith("c")) {
cmethod();
}
else if (entry.startsWith("n")) {
nmethod();
}
else {
// default behaviour if wrong entry
}
仅当输入不是'c'而为'n'时才会调用nmethod(),如果满足其中的none,则进入else
部分。
您必须将 next()
提取到一个变量。如果您不这样做,next()
将始终 return 当前关键字并转到下一个关键字。
此外,如果要检查另一个关键字,则必须使用 else if
。
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
Scanner choices = new Scanner(System.in);
String keyword = choices.next();
if (keyword.startsWith("c")) {
cmethod();
} else if (keyword.startsWith("n")) {
nmethod();
} else {
System.out.println("Keyword is wrong.");
}
}
即使您在此处提供了一些可行的解决方案,但没有人谈论真正简单的 switch
语句似乎很奇怪。
基本上:
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
Scanner choices = new Scanner(System.in);
switch(choices.next().charAt(0)) {
case 'c':
cmethod();
break;
case 'n':
nmethod();
break;
default:
System.out.println("Keyword is wrong.");
}
}
这与其他答案有关 next()
函数仅计算一次这一事实。
在可以传递方法名的地方使用反射,如果方法存在就会找到它,否则会抛出异常,在你可以显示消息的地方。
java.lang.reflect.Method method;
try {
method = this.getClass().getMethod(methodName, param1.class,
param2.class, ..);
} catch (SecurityException e) { ... }
catch (NoSuchMethodException e) { ... }
尝试在下面的测试示例中输入正确和错误的方法名称的示例。
public class Test {
public static void main(String[] args) {
Object obj = new Test();
java.lang.reflect.Method method;
try {
method = obj.getClass().getMethod("tryone1");
System.out.println("Found");
} catch (SecurityException e) {
System.out.println(" SecurityException Found");
} catch (NoSuchMethodException e) {
System.out.println("Not Found");
}
}
public void tryone() {
// TODO Auto-generated method stub
}
public void trytwo() {
// TODO Auto-generated method stub
}
}
请根据您的需要自定义上述示例。例如,如果 c 作为参数出现,则 String methodname= arg[0]+"method" 并在 getMethod("tryone1") 方法中作为方法参数名称传递。
尝试:
public static void main(String[] args) {
System.out.println("This program can randomize characters or numbers.");
System.out.println("Please input \"c\" for characters, and \"n\" for numbers. ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try{
String s = br.readLine();
if (s.startsWith("c")) {
System.out.println("c");
System.exit(1);
}
if (s.startsWith("n")){
System.out.println("n");
System.exit(1);
}else {
System.out.println("Keyword is wrong.");
}
}catch(Exception e){
e.printStackTrace();
}
}
对我有用,希望对你有用。
另一种方法:使用 switch-case
String s =choices.next();
char first = s.charAt(0);
switch(first){
case 'c': cmethod(); break;
case 'n':nmethod(); break;
default : System.out.println("Keyword is wrong.");
}