我必须做以下事情:
1.-从DB读取一些行(可能超过1) 2.-用数据填充ArrayList 3.-一次调用一行数据的WebService 4.-如果任何行的传输出现问题,请再试3次。
问题在于我使用For Each循环来设置数据而我不知道如果我可以在该循环上重复迭代。
我正在考虑使用常规For循环,如下所述:
How does the Java 'for each' loop work?
但我有两个问题:
我怎样才能得到正确的方法来获得"长度"在我的情况下?
在我的情况下,我必须使用方括号[i]?
我应该重新安排代码吗?
这是我的代码简介:
ArrayList<SomeBean> v = new ArrayList<SomeBean>();
while(index < 1000)
{
//Read some data from DB
//Fill the arraylist
for(SomeBean s : v)
{
if (repeat == 0)
{
//Use the Data of the current iteration to invoke Webservice
String column1 = s.getColumn1();
String column2 = s.getColumn2();
String column3 = s.getColumn3();
...
}
else
{
//Don´t use the Data of current iteration, try again with the same data
}
try
{
//Invoke WebService and send the data
if (answer == OK)
{
//Print OK
}
else
{
//Print NOT OK
}
}
catch (Exception)
{
//Print the Exception
repeat++;
if (repeat > 3)
{
repeat = 0; //Go to read a new group of data
index++;
}
}
}
}
答案 0 :(得分:0)
这是递归的完美任务。这里的想法是,如果逻辑中发生错误并且尝试次数超过预定限制,则失败。否则,它会通过递归调用自身再次尝试。
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "C:\\New_Download");
DesiredCapabilities caps = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
options.addArguments("--disable-extensions");
caps.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(caps);
driver.get("http://www.google.com");