因此,我创建了一个2D字段,该字段按三位一组填充了标识符。
是否有一种方法可以从第4行开始迭代?如果是,怎么办? 这是二维场的图像。
我尝试了每个循环,但似乎无法正常工作。
这是我无法弄清楚的代码,例如如何获得第四行。
答案 0 :(得分:3)
不是使用foreach,而是使用起始索引为3的经典for循环。
var connString = ConfigurationManager.ConnectionStrings["ACIGPSDBConnection"].ConnectionString;
using (var db = new ACIGPSDBConnection(connString))
{
if (!string.IsNullOrWhiteSpace(myQueueItem))
{
var breadCrumbList = JsonConvert.DeserializeObject<IList<BreadCrumb>>(myQueueItem);
if (breadCrumbList != null && breadCrumbList.Count() > 0)
{
var activeRouteJob = from j in db.Jobs
join rj in db.RouteJobs on j.Id equals rj.JobID
where j.IsActive == true && j.EndDate > DateTime.UtcNow &&
breadCrumbList.Any(a => a.CarrierId == rj.CarrierID)
select new RouteJobDelivery
{
RouteJobId = rj.Id,
StartDate = j.StartDate,
EndDate = j.EndDate
};
<add name="ACIGPSDBConnection"
connectionString="metadata=res://*/ACIGPSDataContext.csdl|res://*/ACIGPSDataContext.ssdl|res://*/ACIGPSDataContext.msl;
provider=System.Data.SqlClient;provider connection string="
Data source=sqlsrv-scu-dev.database.windows.net;
initial catalog=md_ACI-dev;user id=;password=;
MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
答案 1 :(得分:3)
对不起,您的图片丢失了,但是我建议像这样,在行循环中选择索引
int startRow = 2;
for (int i = startRow; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
board[i][j] = i + j;
}
}
答案 2 :(得分:2)
我认为这会起作用
int mat[][] = { {10, 20, 30, 40, 50, 60, 70, 80, 90},
{15, 25, 35, 45},
{27, 29, 37, 48},
{32, 33, 39, 50, 51, 89},
};
for(int i=3; i<mat.length; i++) {
for(int j=0; j<mat[i].length; j++) {
System.out.println("Values at arr["+i+"]["+j+"] is "+mat[i][j]);
}
}
答案 3 :(得分:1)
是的,您可以做到。如果要从第4行开始,请通过将初始循环指定为3来启动迭代。
for(int i=3 ; i < (maximum number of rows initiated at the beginning of the array); i++)
一般来说,代码如下
for(i=the row which you want to start from; i < maximum number of rows initiated at the beginning of the array; i++){
for(j=0; j<maximum number of columns initiated at the beginning of the array; j++)
{
System.out.println(arr[i][j]);
}
}
答案 4 :(得分:1)
在这种情况下,您有两种选择。 传统上,您可以使用“ for”循环,例如:
for (int i=0, i<10, i++) {
*commands here*
}
int i=0
是您的初始条件,您可以将0替换为您要开始的索引。请记住,数组索引从0开始,所以第四个元素将是索引3
i<10
控制希望循环播放的次数,在这种情况下为10次。
i++
是您希望增加索引值的方式
当然,您可以使用while
,但是在这种情况下,for
循环通常更好。我建议您查找它们,因为它们具有一些我这里未介绍的有用功能。
您的第二选择是使用流:
Arrays.toStream(myArray)
.drop(4) // drop the first four elements
.other processing
在某些情况下,流的“效率”可能较低,但我发现它们更具可读性。
答案 5 :(得分:0)
如果只想获取特定的行,可以将外部循环更改为基本for循环,如上所述。 如图所示:-
private Integer[][] comparedProducts = new Integer[][]{
{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}
};
for(int i=3;i<size;i++){
for(int a:comparedProducts[i]){
//DO work
}
}
此外,您可以使用ArrayList代替array,然后可以使用ArrayList的subList方法。
List<List<Integer>> comparedProducts = new ArrayList<>();
public void initialiseList(){
comparedProducts.add(Arrays.asList(1,2,3));
comparedProducts.add(Arrays.asList(4,5,6));
comparedProducts.add(Arrays.asList(7,8,9));
}
for(List comparedProduct:comparedProducts.subList(3,comparedProducts.size()){
// One more foreach loop for each element
// Or do some Work.
}
ArrayList有很多非常有用的方法。因此,如果更改不多,请使用ArrayList。