我在处理数组时遇到麻烦。基本上,我在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”。
对不起,这很抱歉。我在解释事情上很糟糕。
答案 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);