我需要一个将一维数组切割成二维数组的程序。 但是:第二维不能是另一个数组,而是新对象。
我有两个输入:
我想要一个输出:
“cuttedStatement”类的这些对象可以同时包含: (参数+他的价值)或(只有参数)。所以有或没有价值的论证都是有效的!
这是我的CutterPrgm代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] statement = {"-in", "FILENAME", "-out", "FILENAME" , "-keep" , "-typ", ".avi", "-status"};
String[] validArgs = {"-in", "-out", "-keep", "-typ", "-status"};
ArrayList<CuttedStatement> cuttedOutputList = new ArrayList<>();
for (int i = 0; i < statement.length; i++) {
boolean contains = Arrays.asList(validArgs).contains(statement[i+1]);
if(contains) {
CuttedStatement obj[i] = new CuttedStatement(statement[i]);
cuttedOutputList.add(obj);
}else {
CuttedStatement obj[i] = new CuttedStatement(statement[i],statement[i+1]);
cuttedOutputList.add(obj);
}
}
}
}
这是我的CuttedStatement-class:
public class CuttedStatement {
String argument;
String value;
boolean hasValue;
public CuttedStatement(String argument) {
this.argument = argument;
this.hasValue = false;
}
public CuttedStatement(String argument, String value) {
this.argument = argument;
this.value = value;
this.hasValue = true;
}
}
所以现在我的问题:正如你猜测的那样,程序不起作用。
我的第一个问题是“obj [i]”对象。我想在每次新迭代时使用index = i创建一个新的“obj”,以便你拥有:Array = {obj1,obj2,obj3,obj4等...}。这看起来不起作用。
也许你知道我的解决方案或有一些提示。希望如此。非常感谢您的帮助,欢迎各方面的帮助! :d
答案 0 :(得分:0)
public class Company
{
public int CompanyId { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Email { get; set; }
public string Url { get; set; }
//...
}
public class HeadOffice : Company
{
public int HeadOfficeId { get; set; }
public virtual List<BranchOffice> BranchOffice { get; set; } = new List<BranchOffice>();
}
public class BranchOffice : Company
{
public int BranchOfficeId { get; set; }
public virtual HeadOffice HeadOffice { get; set; }
}
该程序输出 [(-in = FILENAME),( - out = FILENAME),( - keep),( - type = .avi),( - status)]
答案 1 :(得分:0)
我几乎没有修改你的逻辑。这里Map将包含你需要的东西。使用地图播放最终输出。
String[] statement = { "-in", "FILENAME", "-out", "FILENAME", "-keep", "-typ", ".avi", "-status" };
String[] validArgs = { "-in", "-out", "-keep", "-typ", "-status" };
Map<String, String> m = new HashMap<String, String>();
String key = null;
for (int i = 0; i < statement.length; i++) {
boolean contains = false;
if(i + 1<statement.length){
contains = Arrays.asList(validArgs).contains(statement[i + 1]);
}
if (contains) {
m.put(key, statement[i]);
} else {
key = statement[i];
m.put(key, "");
}
}