我正在尝试从用户那里获取输入并验证它以确保它不是空值。我还必须将字符串转换为整数。我一直在尝试使用扫描仪来获得这个结果,但成效有限。我究竟做错了什么?仅供参考我是Java的新手(约两周)。所以请原谅我的问题可能包含的任何无知。
import java.util.Scanner;
public class NumbersTest {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
String Num = args[0];
int i = Integer.parseInt(Num);
if (userInput == null){
printError();
return;
}
else if (i % 2 == 0){
System.out.println("even");
}
else if (i % 2 != 0){
System.out.println("odd");
}
}
private static void printError() {
System.out.println("Please enter a number.");
}
}
答案 0 :(得分:1)
我想你是Java新手。虽然问题不是有效问题,因为你没有得到基础知识而程序甚至不会在第一时间编译,但我在下面提出了基本要点。
userInput
变量是Scanner
引用,而不是您的命名约定所示的输入。供您参考,请按照以下方式进行修改,以便更好地理解。
Scanner inputScanner = new Scanner(System.in);
因此,inputScanner
的空检查变得不必要了,因为它是在上面新初始化的。
为了检查输入是否为空,首先使用输入,
inputScanner.nextLine()
继续前进。
快乐学习。
答案 1 :(得分:1)
嗯,根据您在上面提供的代码,我注意到了这一点:
input
,因此无法编译。执行此操作时,它正在解析第一个命令行参数而不是System.in流中的输入:
String Num = args[0];
int i = Integer.parseInt(Num);
它不会捕获可以通过调用Integer.parseInt
抛出的NumberFormatException
Scanner
。以下是纠正这些问题的代码:
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
String input = userInput.next();
if (input == null) {
printError();
userInput.close();
return;
}
try {
int i = Integer.parseInt(input);
if (i % 2 == 0) {
System.out.println("even");
}
else if (i % 2 != 0) {
System.out.println("odd");
}
} catch (NumberFormatException e) {
printError();
}
userInput.close();
}
private static void printError() {
System.out.println("Please enter a number.");
}
最后一个想法 - 我怀疑Scanner在使用这种方式时会返回null,因为它默认使用空格作为分隔符 - 请参阅this page。因此,可能没有必要检查null,但它肯定不会伤害任何东西,作为一般的良好实践,你最好不要处理潜在的错误。
答案 2 :(得分:0)
在此代码中,您有4个变量
Scanner userInput = new Scanner(System.in); // this is OK
String Num = args[0]; // args are command line parameters - not needed
int i = Integer.parseInt(Num); // Should be parsing the userInput e.g. nextLine() ?
if (input == null){ // where on earth has input come from
所以尝试像
这样的东西public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
String input = userInput.nextLine();
if (input == null || input.length() == 0){
printError();
return;
}
int i = Integer.parseInt(input);
if (i % 2 == 0){
System.out.println("even");
}
else { // no else if needed, as there are only two choices
System.out.println("odd");
}
}
private static void printError() {
System.out.println("Please enter a number.");
}