台灣最大程式設計社群網站
線上人數
1115
 
會員總數:239905
討論主題:186053
歡迎您免費加入會員
討論區列表 >> C# >> 字串陣列問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
字串陣列問題
價值 : 80 QP  點閱數:211 回應數:2

樓主

小鐘
門外漢
0 3
234 0
發送站內信

當我textBox1.Text輸入!AIVDM,1,1,,A,H42O55i18tMET00000000000000,2*6D時出現以下錯誤
請問是哪裡錯了 感謝

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{


public string[] str3 = new string[50];
public char[] cha = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', '\'', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w' };

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
int i;
string[] sum = new string[28];
str3[1] = textBox1.Text.Substring(14, 28);
char[] cha2 = new char[28];
cha2 = str3[1].ToCharArray();

/*********************************************************************************/
// 1. 修正
int f, c1, c2;
string[] v = new string[28];
string[] b1 = new string[28];
for (i = 0; i < cha2.Length; ++i)
{
for (f = 0; f < 64; ++f)
{
if (f < 41)
{
if (cha2[i] == cha[f])
{
c1 = (int)cha2[i] - 48;
v[i] = Convert.ToString(c1, 2);
b1[i] = v[i].PadLeft(6, '0');
}
}

else
{
if (cha2[i] == cha[f])
{
c2 = (int)cha2[i] - 56;
v[i] = Convert.ToString(c2, 2);
b1[i] = v[i].PadLeft(6, '0');
}
}
}
int k;
string total= "";

for (k = 0; k < 28; k++)
total+= b1[k];
string[] con = new string[47];
int[] inte = new int[47];


/*********************************************************************************/
// 2. 修正

con[0] = total.Substring(0, 6);
inte[0] = Convert.ToInt32(con[0], 2);

con[1] = total.Substring(6, 2); 這裡顯示索引和長度必須參考字串中位置 參數名稱: length
inte[1] = Convert.ToInt32(con[1], 2);

con[2] = total.Substring(8, 30);
inte[2] = Convert.ToInt32(con[2], 2);

con[3] = total.Substring(38, 2);
inte[3] = Convert.ToInt32(con[3], 2);

con[4] = total.Substring(66, 4);
inte[4] = Convert.ToInt32(con[4], 2);

con[5] = total.Substring(70, 20);
inte[5] = Convert.ToInt32(con[5], 2);

con[6] = total.Substring(132, 9);
inte[6] = Convert.ToInt32(con[6], 2);

con[7] = total.Substring(141, 9);
inte[7] = Convert.ToInt32(con[7], 2);

con[8] = total.Substring(150, 6);
inte[8] = Convert.ToInt32(con[8], 2);

con[9] = total.Substring(156, 6);
inte[9] = Convert.ToInt32(con[9], 2);

con[10] = total.Substring(132, 30);
inte[10] = Convert.ToInt32(con[10], 2);

con[45] = total.Substring(40, 8);
inte[45] = Convert.ToInt32(con[45], 2);

int m, p = 0, n = 40;
string[] s1 = new string[20];
for (m = 11; m < 31; m++)
{
con[m] = total.Substring(n, 6);
inte[m] = Convert.ToInt32(con[m], 2);



搜尋相關Tags的文章: [ 這裡顯示索引和長度必須參考字串中位置 參數名稱: length ] ,
本篇文章發表於2017-01-11 10:16
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

QOO
捐贈 VP 給 QOO 檢舉此回應
您好

我想應該是您的大括號擺錯位置


本篇文章回覆於2017-01-11 11:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Eucalyptus
檢舉此回應
排除掉漏括號的問題之後,你的程式:
con[1] = total.Substring(6, 2); 這裡顯示索引和長度必須參考字串中位置 參數名稱: length --> 因為total的值是"011000",取子字串時起始索引6已經超過(0~5),所以會出錯。
當然之後的程式也都不能執行,
至於為什麼total字串長度這麼短,就請從頭逐步執行監看變數值的變化。
本篇文章回覆於2017-01-18 14:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.