因此,我试图弄清楚如何在包含某个特定类型的参数时跳过该参数:
args:蓝色3红色7绿色5黄色2
我想将数字存储在数组中,将颜色存储在单独的数组中。因此,如果args [i]是字符串,则将其存储在颜色数组中,如果它是int,则将其存储在numbers数组中。诸如if(args [i] == String)然后类似,依此类推。显然这是行不通的,所以我正在寻找其他解决方案。
const options = {
url: `${this.endpoint}/API/${url}`,
withCredentials: true
};
const response = await request(options);
return JSON.parse(response);
非常感谢您的帮助。
答案 0 :(得分:2)
尝试一下:
public class Main {
public static void main(String[] args) {
List<String> colors = new ArrayList<>();
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < args.length; i++) {
try {
numbers.add(Integer.parseInt(args[i]));
} catch (NumberFormatException e) {
colors.add(args[i]);
}
}
String[] colorsArray = colors.toArray(new String[0]);
int[] number = numbers.stream().mapToInt(num -> num).toArray();
}
}
答案 1 :(得分:1)
尝试一下
public class Main {
public static void main(String[] args)
{
String[] colors = new String[args.length] ;
int color_ix=0;
int number_idx=0;
Integer[] number = new Integer[args.length] ;
for(int i = 0; i < args.length; i++)
{
if(args[i]==null) {continue;}
try
{
number[number_idx]=Integer.parseInt(args[i]);
number_idx++;
}
catch(NumberFormatException e)
{
colors[color_ix]=args[i];
color_ix++;
}
}
System.out.println("-----Number-----");
for(int i=0;i<number_idx;i++)
{
System.out.println(number[i]);
}
System.out.println("-----Colors-----");
for(int i=0;i<color_ix;i++)
{
System.out.println(colors[i]);
}
}
}
输出 $ java主要蓝色绿色3红色2黑色1
-----Number-----
3
2
1
-----Colors-----
Blue
Green
Red
Black
答案 2 :(得分:1)
您可以简单地
1。。为数字和字符串创建ArrayList
2。。根据 regex 匹配项向列表中添加值,该匹配项会检查参数是数字还是字符串
3。。将ArrayList
转换为arrays
public static void main(String[] args) {
List<Integer> numberList = new ArrayList<>();
List<String> strList = new ArrayList<>();
for (int i = 0; i < args.length; i++) {
if (Pattern.matches("-?\\d+", args[i])) {
numberList.add(Integer.parseInt(args[i]));
} else {
strList.add(args[i]);
}
}
String[] colors = strList.toArray(new String[0]);
int[] number = ArrayUtils.toPrimitive(numberList.toArray(new Integer[numberList.size()]));
}
答案 3 :(得分:1)
您可以使用Apache Commons Lang StringUtils.isNumeric来检查它是否为数字。
If a node fails, the load is spread evenly across other nodes in the cluster".
答案 4 :(得分:0)
public static void main(String[] args) {
// args = Blue 3 Red 7 Green 5 Yellow 2
String[] colors = Arrays.stream(args).filter(str -> str.matches("\\D+")).toArray(String[]::new);
int[] number = Arrays.stream(args).filter(str -> str.matches("[-+]?\\d+")).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(colors)); // [Blue, Red, Green, Yellow]
System.out.println(Arrays.toString(number)); // [3, 7, 5, 2]
}