2014-12-10 4 views
-3

мне нужно рассмотреть, является ли данное число x делится с наименьшим номером:Почему эта программа в C# не работает?

int x, a, b, c,min; 

x = Convert.ToInt32(tbx.Text); 
a = x/100; 
b = (x/10) % 10; 
c = x % 10; 
a = min; 

if (b < min) 
    b = min; 

if (c < min) 
    c = min; 

if ((x % min) = 0) 
     lbl_solution.Text = "number is divisible"; 
else 
     lbl_solution.Text = "number is not divisible"; 

Как я могу исправить эту ошибку?

не может неявно преобразовать в ИНТ BOOL

+0

Что вы пытаетесь достичь ?, вы не возвращаете истину или ложь в IF. – Haris

+3

Вы не хотите '(x% min) == 0' вместо этого? –

+2

На какой строке вы получите эту ошибку? Не могли бы вы быть более конкретными? –

ответ

0

ваша первая ошибка в этой строке:

if ((x % min) = 0) 

вы должны использовать == так:

if ((x % min) == 0) 

секонд ошибка является: переменная min не inizualized ...

int x, a, b, c; 
int min = 2; 

x = Convert.ToInt32(tbx.Text); 
a = x/100; 
b = (x/10) % 10; 
c = x % 10; 
a = min; 

if (b < min) 
    b = min; 

if (c < min) 
    c = min; 

if ((x % min) == 0) 
    lbl_solution.Text = "number is divisible"; 
else 
    lbl_solution.Text = "number is not divisible"; 
+0

Я не думаю, что это так. Поскольку 'x% min' возвращает' int' и будет как '5 = 0', и в таком случае сообщение об ошибке должно быть' Левая сторона присваивания должна быть переменной, свойство или индексом '' не 'не может неявно конвертировать int в bool' –

+2

@ SonerGönül no. он даст вам эту ошибку, если вы используете '(x% min) = 0;' себя.но поскольку он используется в месте, где ожидается логическое значение, он пытается преобразовать результат '(x% min) = 0' в bool, следовательно, ошибка –

+0

@ Selman22 Да, это даст _cannot неявно преобразовать .._ сообщение * * first ** then _ Левая часть сообщения присваивания .._. –

-1

Похоже, проблема в том, что линия;

(x % min) = 0 

x % min Вернуть int значение, а не переменная . Например, это будет 5 = 0;

Это означает, что в этом случае вы получите 2 ошибки времени компиляции;

  • Невозможно неявно преобразовать int в bool. (Потому что if заявление ожидает boolean expression)
  • Левая часть задания должна быть переменной, свойством или индексом.

Сильно подозреваю, что вы просто хотите проверить ваш x делится на min без напоминания. Если это так, вам нужно использовать equality operator вместо assignment operator;

if ((x % min) == 0) 

И компилятор C# не позволяет использовать неинициализированные переменные. В вашем случае вы пытаетесь использовать переменные a и min без их инициализации.

+1

@ Downvoter позаботится прокомментировать, по крайней мере, чтобы я мог видеть, где я могу ошибаться? –

1

благодарит вас за то, что вы мне очень помогли, это код corect i сделанный благодарю вас

 int x, a, b, c, min; 
     x = Convert.ToInt32(tbx.Text); 
     a = x/100; 
     b = (x/10) % 10; 
     c = x % 10; 
     min=a; 
     if (b < min) 
     b = min; 
     if (c < min) 
     c = min; 
     if ((x % min) == 0) 
      lbl_solution.Text="number is divisible"; 
     else 
      lbl_solution.Text="number is not divisible"; 
Смежные вопросы