例如我有一个长[] x 我正在做:
for (int i=0; i<x.length;x--)
{
}
我知道在x中例如我有30个索引单元格。 我如何遍历x数组中的单元格(索引),并在每个单元格上找到它的长度,并获取/显示每个单元格中的数字。
如果在x [0]中有232 在x [1]中有21 等等...
我想显示232,21,....等 然后我想检查一下,如果x [i] .length大于0,那么...... 但是没有x [i] .length
那我该怎么做?
我做了:
public long GetHistogramMaximum(long[] histogram)
{
long result = 0;
long count = 0;
for (int i = 0; i < histogram.Length; i++)
{
if (histogram[i] > 0)
{
MessageBox.Show(histogram[i].ToString());
break;
}
}
return result;
}
它的工作,但每次它向我显示两次为什么消息框每次工作两次? 如果在第一个数组中,数字是33454,那么我会再看一次消息框。这里有什么不对?我希望它每次只显示一次这个数字。
它就像重复每个数字并再一次显示它,然后再一次显示它。然后再移动到下一个数字。
编辑**
也许每次显示两次数字的问题与使用滚动事件有关?
void trackBar1_Scroll(object sender, EventArgs e)
{
myTrackPanelss1.trackBar1.Minimum = 0;
myTrackPanelss1.trackBar1.Maximum = counter - 1;//list_of_histograms.Count-1;
long[] tt = list_of_histograms[myTrackPanelss1.trackBar1.Value];
histogramControl1.DrawHistogram(tt);
long res = GetTopLumAmount(tt, 1000);
long max = GetHistogramMaximum(tt);
if (res > -1)
label24.Text = (res / 1000.0).ToString();
setpicture(myTrackPanelss1.trackBar1.Value);
this.pictureBox1.Refresh();
}
由于某种原因,它进入滚动并再次在这里做所有事情。连续两次。 可能是什么问题?
答案 0 :(得分:1)
long[]
基本上包含多个long
值。执行x[i].length
无效,因为long
没有属性length
。你想要实现的是什么?
long[] x = {1,2,3} ;
x.length; //this is valid because you are querying the length / count of the array
x[0].length; //this is invalid because 1 does not have a property length
修改强>
您的循环计数器将成为索引。所以,
for (int i =0; i < x.Length; i++)
{
//check for maximum, when you find it
Console.WriteLine("The maximum value is " + x[i]);
Console.WriteLine("The maximum value is present at index " + i);
}
答案 1 :(得分:0)
以下是基于数组中值的方法:
for (int i=0; i < x.Length; i++)
{
// print the number to the screen.
Console.WriteLine(x[i]);
if (x[i] > 0) {
// do something else.
}
}
我不确定你对x--的意思,但这可能与你的描述有关。
答案 2 :(得分:0)
正如迈克尔所说,你可以通过x.Length找到数组的长度。在C#中,x.Length(其中x是一个数组)将返回一个32位整数,表示所有维度中总个元素的数量。你这里只有一维数组,所以这应该足以满足你的目标。
如果您还在存储在数组中的值之后,则将该值称为:
x[i];
所以,在一个例子中:
for ( int i = 0; i < x.Length; i++)
{
Console.WriteLine(x[i]);
}
...会在控制台中显示数组中的值。
这就是你问的问题吗?
答案 3 :(得分:0)
您可以将其强制转换为字符串并获取length属性。
x[i].ToString().Length
虽然如果你想检查长度是否高于零,那么肯定只是存在一个值证明了这一点?
答案 4 :(得分:0)
你的功能有一个可怕的问题:
public long GetHistogramMaximum(long[] histogram)
{
long result = 0;
long count = 0;
for (int i = 0; i < histogram.Length; i++)
{
if (histogram[i] > 0)
{
MessageBox.Show(histogram[i].ToString());
break;
}
}
return result;
}
这样,您可以检查数组中的值。 当i = 0时,它检查x [i]。所以,33454(你在x [0]中给出的值)大于0,它显示数字和“break;”,因此它停止“for”并执行下一步:它返回永不修改的结果变量。 因此,变量结果和计数在代码中无用。
用某种方式重写以获得数组中的最大值:
public long GetHistogramMaximum(long[] histogram)
{
long result = 0;
for (int i = 0; i < histogram.Length; i++)
{
if (histogram[i] > result)
{
MessageBox.Show(string.Format("{0} is greater than {1}", histogram[i], result);
result = histogram[i];
}
}
return result;
}