我正在编写一个简短的程序来提示用户输入数字,然后我会测试它们是否为负数并报告哪些数据通过了此测试。我正在寻找一种避免为每个预期输入重复逻辑的方法。
这是我到目前为止所拥有的:
import java.util.Scanner;
public class Negative
{
public static void main(String[] arg)
{
Scanner scan = new Scanner(System.in);
System.out.println("Insert three integers, USER.");
int x = scan.nextInt();
int y = scan.nextInt();
int z = scan.nextInt();
if (x < 0 || y < 0 || z < 0)
{
System.out.println("A number is negative.");
}
}
}
我知道我可以单独完成这些,但我想以某种方式压缩代码。
答案 0 :(得分:1)
您始终可以创建一个方法,该方法接受变量 name
和value
,然后将其打印出来。像,
private static void display(String name, int val) {
if (val >= 0) {
System.out.printf("%s (%d) is NOT negative%n", name, val);
} else {
System.out.printf("%s (%d) is negative%n", name, val);
}
}
然后你可以拨打display()
,
public static void main(String[] arg) {
Scanner scan = new Scanner(System.in);
System.out.println("Insert three integers, USER.");
display("x", scan.nextInt());
display("y", scan.nextInt());
display("z", scan.nextInt());
}
现在它实际上并不存储x
,y
或z
。如果您以后需要它们,那么您确实需要
public static void main(String[] arg) {
Scanner scan = new Scanner(System.in);
System.out.println("Insert three integers, USER.");
int x = scan.nextInt();
int y = scan.nextInt();
int z = scan.nextInt();
display("x", x);
display("y", y);
display("z", z);
// do something else with x,y or z
}
答案 1 :(得分:0)
您还可以使用Google guava preconditions语句使其更清晰。
例如,上面的代码可以更改..
import com.google.common.base.Preconditions.*;
public class Negative
{
public static void main(String[] arg)
{
Scanner scan = new Scanner(System.in);
System.out.println("Insert three integers, USER.");
int x = scan.nextInt();
int y = scan.nextInt();
int z = scan.nextInt();
Preconditions.checkArgument(x < 0 || y < 0 || z < 0 ,"Negative number entered");
}
}
如果参数失败,则会抛出IllegalArgumentException
。
更多文档here
希望这会有所帮助..
答案 2 :(得分:0)
你可以通过简单地应用循环直到用户输入正数来实现: -
int x = scan.nextInt();
int y = scan.nextInt();
int z = scan.nextInt();
while(x<0||y<0||z<0)
{
x = scan.nextInt();
y = scan.nextInt();
z = scan.nextInt();
}