我尝试使用命令行(args [0]和args [1])将数字列表合并为一个
顺便说一句,我想检查是否有足够的引号(因为所需的格式是("数字列表1和#34;"数字2和#34的列表;))知道我是否继续执行该计划的其余部分。
我尝试将args [0]和args [1]放在两个不同的字符串中并检查它们是否有引号,但它们没有。
我想知道如何检查命令行中的引号数。
这是我到目前为止所做的:
String exampleString = "\"12 1 14 -3 7\"" + "\"45 2 16 -6\"";
int quoteCounter = 0;
for(int i=0; i < args[0].length(); i++) {
if(args[0].charAt(i) == '"') {
quoteCounter++;
}
}
for(int i=0; i < args[1].length(); i++) {
if(args[1].charAt(i) == '"') {
quoteCounter++;
}
}
if (quoteCounter != 4) {
System.out.println("Run the program again and respect the following format please (as many numbers as you want can be inputted) : \"" + exampleString + "\"");
System.exit(1);
} else {
}
答案 0 :(得分:0)
您无需检查任何引号。
如果您调用Intent intent = new Intent(this, YourActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish(); // call this to finish the previous activity
(忽略Java通常不生成C:/> run.exe "1 2 3 4 5" "6 7 8 9 10"
文件的事实,因为它无关紧要),参数列表将包含.exe
和{{1当然,(和1 2 3 4 5
),因为引号标记字符串忽略空格。
args本身没有得到引号。
其中的每个项目都是一个带引号的字符串,因此您只需将6 7 8 9 10
数组的长度与2进行比较。
答案 1 :(得分:-1)
这段代码可以解决问题:
import java.util.*;
class Main
{
/* This method checks whether a given argument is valid
*/
private static boolean isValidArgument(String arg)
{
return arg.startsWith("\"") && arg.endsWith("\"");
}
/* This method converts an argument into a Set<Integer>
*/
private static Set<Integer> toIntegerSet(String arg)
{
Set<Integer> s = new HashSet<>();
for(String part : arg.substring(1, arg.length()-1).split(" "))
{
s.add(Integer.parseInt(part));
}
return s;
}
public static void main(String[] args)
{
String arg0 = "\"1 2 3 4 5\"";
String arg1 = "\"5 6 7 8 9\"";
if(!isValidArgument(arg0))
System.err.println("Invalid argument at index 0");
if(!isValidArgument(arg1))
System.err.println("Invalid argument at index 1");
// merge into a set (to avoid duplicates)
Set<Integer> mergedSet = toIntegerSet(arg0);
mergedSet.addAll(toIntegerSet(arg1));
// turn into a list (to sort)
List<Integer> mergedList = new ArrayList<>(mergedSet);
java.util.Collections.sort(mergedList);
// turn into array (for displaying)
Integer[] mergedArray = mergedList.toArray(new Integer[mergedList.size()]);
System.out.println(java.util.Arrays.toString(mergedArray));
}
}
或者查看IdeOne上的实时版本