如何解决此阵列问题?汽车存放程序

时间:2020-03-26 18:44:57

标签: java

我在处理数组时遇到麻烦。基本上,我在CS课程中遇到了汽车存放问题,而不是要求他们单独输入年份,而是单独建模,我希望他们能够输入例如“ 2019 Honda Civic Type R”。

    final String[] properName = carName.split(" ");
    System.out.println(properName.length);

    // Tags mean like (SI, Type R, R, RS/SS, etc)
    String tags = null;
    for (int i = 0; i < properName.length; i++) {
        if (properName.length >= 4) {
            tags = properName[i];
        }
    }

如您所见,我正在分割字符串,以便可以创建一个新的汽车对象,例如: new Car(properName [0](year),properName [1](make),properName [2] (型号)等)。

我的问题是名称超过4个参数的汽车。例如,“ 2019 Subaru WRX STI”没有问题,但是“ 2019 Honda Civic Type R”返回“ 2019 Honda Civic R”。

对不起,这很抱歉。我在解释事情上很糟糕。

2 个答案:

答案 0 :(得分:1)

我猜您想在标签变量中收集汽车标签的名称。超过两个字的汽车名称就是标签名称。

public class Solution {

public static void main(String[] args) {
    String carName = "2019 Honda Civic Type R";

    final String[] properName = carName.split(" ");
    System.out.println(properName.length);

    // Tags mean like (SI, Type R, R, RS/SS, etc)
    StringBuilder tags = new StringBuilder();
    for (int i = 3; i < properName.length; i++) {
        tags.append(properName[i]).append(" ");
    }
   System.out.println(tags.toString());
  }
}

答案 1 :(得分:0)

循环看起来非常多余,首先,您可以像String tags = properName[properName.length - 1]那样直接访问数组,但这不是您的问题。

为了解决此问题,我建议仅使用正则表达式

^(\d+) (\w+) (\w+) ([\w ]+)(匹配数字,然后是两个单词,然后是由单词字符和空格组成的其他文本)

String car = "2019 Honda Civic Type R";
Pattern pattern = Pattern.compile("^(\\d+) (\\w+) (\\w+) ([\\w ]+)");
Matcher matcher = pattern.matcher(car);
boolean matches = matcher.matches();
if (!matches) throw new IllegalArgumentException("Invalid input!");

String year = matcher.group(1);
String make = matcher.group(2);
String model = matcher.group(3);
String type = matcher.group(4);
相关问题