2012-11-22 3 views
0
int monthentered = 0; 
int dayentered = 0; 
int year = 0000; 
int [] month = new int [12]; 
int [] day = new int [31]; 
bool leap = false; 

for (int x = 0; x <= 11; x++) 
{ 
    month[x] = x+1; 
} 

for (int x = 0; x <= 30; x++) 
{ 
    day[x] = x+1; 
} 
Console.WriteLine("Please enter a year..."); 
year = (Convert.ToInt16(Console.ReadLine())); 
Console.WriteLine("{0}", year); 

Console.WriteLine("Please enter a month..."); 
monthentered = (Convert.ToInt16(Console.ReadLine())); 

Console.WriteLine("Please enter a day..."); 
dayentered = (Convert.ToInt16(Console.ReadLine())); 

while (monthentered == 01 || 03 || 05 || 07 || 08 || 10 || 12) 
{ 
    while (dayentered == 31) 
    { 
     Console.WriteLine("There are only 30 days in this month please re-enter your day..."); 
     dayentered = (Convert.ToInt16(Console.ReadLine())); 
    } 
} 

while (monthentered == 02) 
{ 
    while (dayentered > 28) 
    { 
     Console.WriteLine("There are only 28 days in this month please re-enter your day..."); 
     dayentered = (Convert.ToInt16(Console.ReadLine())); 
    } 
} 

Console.WriteLine("{0}/{1}/{2}", dayentered, monthentered, year); 
Console.ReadKey(); 

while (monthentered == 01 || 03 || 05 || 07 || 08 || 10 || 12)에 문제가 있습니까? 내가 이해하지 못하는 오류가 발생합니다. "Operator '||' cannot be applied to operands of type 'bool' and 'int'"내 "while"문에 문제가 있습니까

도와주세요.

+2

그런 식으로 작성하는 것이 아닙니다. 나는 당신이'if (montheentered == 01) 또는 (monthentered == 02) 또는 ...)'와 동등한 시도를한다고 가정한다. –

답변

1

그것은 || 사이

while (monthentered == 01 ||monthentered == 03 || monthentered ==05 || monthentered ==07 || monthentered ==08 || monthentered ==10 || monthentered ==12) 
3
while(monthentered == 01 || monthentered == 03 || monthentered == 05 || monthentered == 07 || monthentered == 08 || monthentered == 10 || monthentered == 12) 

모든 작업을해야합니다

while (monthentered == 1 || monthentered == 3 || monthentered == 5 /*|| ...*/) 

당신에게 : 및 & & 모든 작업이 독립적으로

2

을 계산하기 때문에 부울 값 (즉 완전한 테스트)에 렌더링 할 필요가 지금은 while(bool || int || int) 같은 것입니다, 당신이 뭔가를 원하는 것 같아요 변수 값을 매번 확인해야합니다. while(bool || bool || bool)

유효 개월의 콜렉션을 생성하고 입력 된 숫자가 정확한지 확인하십시오.

2

운영자 '||' 각 부분은 당신이 bool으로 평가해야와 ||를 사용하는 - 유형 당신은 숫자에 ||를 사용할 수 없습니다 '부울'과 'INT'

의 피연산자에 적용 할 수 없습니다.

조건부가 같아야합니다 : 더 읽을 수있는 옵션이 될 것이다하지만

while (monthentered == 01 || 
     monthentered == 03 || 
     monthentered == 05 || 
     monthentered == 07 || 
     monthentered == 08 || 
     monthentered == 10 || 
     monthentered == 12) 

: 만 참/거짓 표현을 허용하면서

var validMonths = new int[] { 1, 3, 5, 7, 8, 10, 12 }; 

while(validMonths.Contains(monthentered)) 
0

C#을!

while (monthentered == 01 || monthentered ==03 || monthentered ==05 || monthentered ==07 || monthentered ==08 || monthentered ==10 || monthentered ==12) 
0

while (monthentered == 01 || 
     monthentered == 03 || 
     monthentered == 05 || 
     monthentered == 07 || 
     monthentered == 08 || 
     monthentered == 10 || 
     monthentered == 12) 

{ 
    //code here 
} 
1

당신은 || operatorbool와 함께 int을 비교할 수 있어야한다. monthentered == 01bool (true/false)이고 나머지는 ints입니다.

int[] allAllowedMonths = new[]{ 1, 3, 5, 7, 8, 10, 12 }; 
while (allAllowedMonths.Contains(monthentered)) 
{ 
    // ... 
} 
0
를 컴파일하지만 것을 코드에 이르게

직접 대답 : 당신이

(monthentered == 01 || monthentered == 03 || monthentered == 05 || 
monthentered == 07 || monthentered == 08 || monthentered == 10 || 
monthentered == 12) 

또한 문제를 사용해야합니다 :

그래서 그동안에 변경

  • 코드에서 32 일 이상 허용 대부분의 개월에.
  • while 월의 루프는 절대로 변경되지 않으므로 종료되지 않습니다. 대신 if 문을 사용하십시오.

추가 힌트 : DateTime.DaysInMonth을 사용하면 수동으로 월 번호를 확인하는 대신 각 월과 연도를 허용하는 최대 수를 얻을 수 있습니다. 이것은 또한 윤년을 수용 할 것입니다.

+0

그것입니까? 나는 그것을 훑어 보았다. 내가이 오류를 어디에서 만들어 주 었는지 지적 해 주시겠습니까? – Brucie67

+0

예를 들어, 귀하의 월이 1 인 경우'(dayentered = 31) '이 아닌'(dayentered == 31)'이 아니라면 "이번 달에는 30 일 밖에 없습니다."라고 – Rawling

+0

고맙습니다. 도움. 나는 프로그래밍 과목에 익숙하지 않고 나는 그립에 도달하기 위해 고심하고있다. 너에게 도움을 요청해라. – Brucie67

0

그것은 지루한 구문입니다하지만 당신은 while 문을 작성해야 할 것 같은 :

while (monthentered == 01 || monthentered == 02 || monthentered == 3 ... 등

먼저 부울 조건 monthentered == 01을 평가하고 논리적으로 시도하거나와 결과 것입니다 귀하의 문 다른 숫자는 int이므로 오류가 발생합니다.

그러나 while 루프가 실제로 여기에서 원하는 것이 무엇인지보고 싶습니다.