我现在正在学习Java,但我遇到了问题。该程序决定第三个点是否在笛卡尔坐标系中的矩形内。第一个点是矩形的左上角,第二个点是右下角。您必须像这样输入:a b c d e f,其中左(a,b)和右(c,d)。 E和f是第三点的要点。我希望扫描仪在6个整数后停止,因此无需填写非整数,例如' end'。这是我的代码的一部分:
import java.util.Scanner;
public class Rectangle {
Scanner scanner = new Scanner(System.in);
void insideRectangle() {
int coordinate;
int a;
int b;
int c;
int d;
int e;
int f;
System.out.println("Please fill in the numbers (6 maximum), with spaces in between");
a = 0;
b = 0;
c = 0;
d = 0;
e = 0;
f = 0;
while ( scanner.hasNextInt() ) {
coordinate = scanner.nextInt();
a = coordinate;
coordinate = scanner.nextInt();
b = coordinate;
coordinate = scanner.nextInt();
c = coordinate;
coordinate = scanner.nextInt();
d = coordinate;
coordinate = scanner.nextInt();
e = coordinate;
coordinate = scanner.nextInt();
f = coordinate;
}
if ( a > c ) {
System.out.println("error");
} else if ( b < d) {
System.out.println("error");
} else if ( e >= a && c >= e && f <= b && d <= f ) {
System.out.println("inside");
} else {
System.out.println("outside");
}
}
}
答案 0 :(得分:4)
尝试:
int[] values = new int[6];
int i = 0;
while(i < values.length && scanner.hasNextInt()) {
values[i++] = scanner.nextInt();
}
然后数组包含您的6个值。
答案 1 :(得分:0)
我喜欢@Jean Logeart的方法,但我会使用for
循环代替:
int[] values = new int[6];
for (int i = 0; i < values.length && scanner.hasNextInt(); ++i) {
values[i] = scanner.nextInt();
}
为了完整起见,您可以将数组值分配给a
,b
,c
变量,以保持其余代码正常工作:
int a = values[0];
int b = values[1];
int c = values[2];
int d = values[3];
int e = values[4];
int f = values[5];
请注意,即使扫描程序发现少于6个值,这也会有效,因为数组值初始化为0。
最后提示:要测试实现,您可以从字符串创建Scanner
,例如:
Scanner scanner = new Scanner("3 4 5 6 7 8 9 10 11");