Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java程序中的对角线和直线绘制_Java_Input - Fatal编程技术网

java程序中的对角线和直线绘制

java程序中的对角线和直线绘制,java,input,Java,Input,在下面的程序中,您可以看到,我允许用户输入一个方向,例如n100,它将向北绘制一条直线,并将其移动100个空间,但是我如何允许草图程序绘制对角线和直线,我知道我能够将输入更改为(0,2)允许使用像ne这样的东西来画对角线,但是我的程序不喜欢使用方向,比如n,e,s,w。 我可以做什么来允许这两条线? 代码如下: 如果你使用 String direction = input.substring(0, 1); String distance = input.substring(1); 您只存储和

在下面的程序中,您可以看到,我允许用户输入一个方向,例如n100,它将向北绘制一条直线,并将其移动100个空间,但是我如何允许草图程序绘制对角线和直线,我知道我能够将输入更改为(0,2)允许使用像ne这样的东西来画对角线,但是我的程序不喜欢使用方向,比如n,e,s,w。 我可以做什么来允许这两条线? 代码如下:

如果你使用

String direction = input.substring(0, 1);
String distance = input.substring(1);
您只存储和比较字符串的第一个字符,并最终为距离指定一个无效的数字,就好像方向是对角的,第二个字符在方向的前面。用于检查给定的方向。在if语句中,确定距离是从第二个字符开始还是从第三个字符开始。您也可以将输入用作检查的值

...
String distance ;
double distanceAsDouble = 0;

if (input.startsWith("n")) {
    t.heading(0);
    distance = input.substring(1);
} else if (input.startsWith("ne")) {
    t.heading(45);
     distance = input.substring(2);
} else if ...
正则表达式的意思是

  • \\D
    匹配非数字
  • \\d
    匹配数字
  • 0或更多的后缀
    *
  • 用于任何字符
  • ^开始
  • $end
  • ()从1开始编号的组
  • $1第1组

不要在垂直和水平移动时使用
if-else
语句
...
String distance ;
double distanceAsDouble = 0;

if (input.startsWith("n")) {
    t.heading(0);
    distance = input.substring(1);
} else if (input.startsWith("ne")) {
    t.heading(45);
     distance = input.substring(2);
} else if ...
String direction = input.replaceFirst("^(\\D*)(.*)$", "$1");
String distance = input.replaceFirst("^(\\D*)(.*)$", "$2").trim();