2014-04-25 1 views
0

제 질문은 제 설명 자체가 내 문제라고 생각합니다. 저는 C#에 비교적 익숙하며 C++에 대한 경험이 있지만 이런 종류의 문제는 절대로 처리하지 못했습니다. 내 코드를 컴파일하면 6 클릭 후 0으로 나누려고 시도했다고 표시됩니다. 여기에 지금까지 내 코드입니다 : brPicsArray이 (분할이 더 남아가없는 경우) 당신이 영으로 나누기 오류를 얻을 것이다 0이되면버튼 하나만 누르면 그림 배열이 하나의 그림 상자에 나타납니다.

public partial class Form3 : Form { 
    int btnClick=0; 
    int brPicsArray = 7; 
    public Form3() { 
     InitializeComponent(); 
    } 

    private void Form3_Load(object sender, EventArgs e) { 

    } 

    private void button1_Click(object sender, EventArgs e) { 
     btnClick++; 
     brPicsArray = btnClick % brPicsArray; 
     switch (brPicsArray) { 
      case 1: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg"); 
       break; 
      case 2: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg"); 
       break; 
      case 3: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg"); 
       break; 
      case 4: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg"); 
       break; 
      case 5: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg"); 
       break; 
      case 6: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic6.jpg"); 
       break; 
      case 7: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic7.jpg"); 
       break; 
+0

실행 그것을 위해 새 변수를 초기화하고 btnClick'과'brPicsArray''의 값을 확인합니다. 나는 당신이 그 변수들을 재사용하고 있기 때문에 결과에 놀랄 것이라고 생각합니다. –

+0

Oh dear @huMptyduMpty. 저것은 중대한 fa [i] ll이다. – FreeAsInBeer

답변

2

brPicsArraybtnClick % brPicsArray으로 설정하면 결국 0과 같습니다.

switch (brPicsArray % btnClick) { 
    case 0: 
    ... 
} 

:

대신, 당신은 같은 것을 사용한다 우리는 더 많은 표준 0의 경우 지수로 시작하고, 우리는 brPicsArray의 값을 변경 아닙니다.


내가 대신 배열에 이미지 이름을 저장하는 대신에 별도로 저장 변수의 배열의 Count 속성을 사용하는 것이 좋습니다 것입니다. 이 경우 다음과 같은 결과가 나옵니다.

public partial class Form3 : Form { 
    string[] imageFilenames = new string[] { 
     "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg", 
     "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg", 
     "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg", 
     "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg", 
     "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg", 
    }; 
    int btnClick=0; 

    private void button1_Click(object sender, EventArgs e) { 
     btnClick++; 
     pictureBox1.Image = Image.FromFile(imageFilenames[imageFilenames.Count % btnClick]); 
    } 
} 
1

모듈로 (%)는 분할 기능 있도록한다.

0

오류가 발생합니다. 모두 0을 반환 어느 btnClick 다음 = 7 당신이

7 % 7 

btnClick % brPicsArray. 

같은

을 수행하는 경우;

0

그림이 숫자로 표시되어 있기 때문에 여기서는 스위치가 필요하지 않다고 생각합니다. 어쨌든 이미지를 얻으려는 숫자를 계산하므로 번호를 계산하고 파일 이름에 추가하십시오. 반드시 전화 번호가 범위를 초과하지 않습니다 (예 : 1-7)

예 :

private_void button1_Click(object sender, EventArgs e) 
{ 
    btnClick++; 
    if(btnClick > 7) btnClick = 1; // or 7 if you don't want to loop 
    pictureBox1.Image = Image.FromFile(String.Format(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic{0}.jpg", btnClick)); 
} 
0

당신이 brPicsArray 값을 초기화하고 수정 0의 결과는 따라서 제로 예외로 분할하는 아주 작은 문제, 작은 해결책

private void button1_Click(object sender, EventArgs e) 
    { 
     btnClick++; 
     int switchPicsValue = btnClick % brPicsArray; 
     switch (switchPicsValue) 

그냥 디버거에서 switch