2013-09-25 3 views
0

내 질문은 어떻게 내 프로그램에 사용자 입력을 유효성 검사합니까 유효하지 않거나 그렇지 않으면 IF를 인쇄 할 수없는 것처럼 보일 수 있습니다. 또한 내가 어떻게 만들 수 있는지 확실하지 않습니다. 입력 된 SIN이 유효하지 않은 경우 프로그램에서 죄를 다시 묻습니다. 그러나 두 번째 유효하지 않은 경우 프로그램이 종료되어야합니다.C에서 사용자 입력의 유효성을 확인하십시오

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace sinValidator 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Variables 


      Int32 numbers1, numbers2, numbers3, numbers4, numbers5, numbers6, numbers7, numbers8, numbers9; 
      Int32 sin; 
      bool valid; 
      Int32 sum; 
      Int32 product; 
      double test; 

      { 

       // Prompt for user input 
       Console.WriteLine("\n Enter SIN: "); 
       sin = Int32.Parse(Console.ReadLine()); 

       // spliting the SIN into 9 seperate digits in different variables, and then printing them. 

       Console.WriteLine("The first digit is {0}", numbers1 = (sin/100000000)); 

       Console.WriteLine("The second digit is {0}", numbers2 = (sin % 100000000/10000000)); 

       Console.WriteLine("The third digit is {0}", numbers3 = (sin % 10000000/1000000)); 

       Console.WriteLine("The fifth digit is {0}", numbers4 = (sin % 1000000/100000)); 

       Console.WriteLine("The sixth digit is {0}", numbers5 = (sin % 100000/10000)); 

       Console.WriteLine("The seventh digit is {0}", numbers6 =(sin % 10000/1000)); 

       Console.WriteLine("The eighth digit is {0}", numbers7 = (sin % 1000/100)); 

       Console.WriteLine("The ninth digit is {0}", numbers8 =(sin % 100/10)); 

       Console.WriteLine("The tenth digit is {0}", numbers9 = (sin % 10)); 

       // Beginning of validation 
       //obtaining product of the sin using provided multipliers 

       product = ((numbers1 * 1) + (numbers2 * 2) + (numbers3 * 1) + (numbers4 * 2) + (numbers5 * 1) + (numbers6 * 2) + (numbers7 * 1) + (numbers8 * 2)); 
       Console.WriteLine("The product {0}", product); 

       // using div and mod to get numbers for the sum of digits 

       sum = (((numbers1 * 1)+ (numbers2 * 2) % 10) +((numbers2 * 2)/10) + (numbers3 * 1) + ((numbers4 * 2)%10) + ((numbers4 * 2)/10) + (numbers5 * 1) + ((numbers6 * 2)%10)+((numbers6 * 2)/10) + (numbers7 * 1) + ((numbers8 * 2)%10) + ((numbers8 * 2)/10)); 


       //Console.WriteLine("sum = {0}", sum); 
       //Test to see if sum % 10 subtracted by 10 will give final digit 

       test = (10 -(sum % 10)); 
       // Console.WriteLine("{0}", test); 
       test = double.Parse(Console.ReadLine()); 



       Console.ReadLine(); 
       //Display the results 
       //Console.WriteLine("first = {0}, second = {1}, third = {2}, fourth = {3}, fifth = {4}, sixth = {5}, seventh = {6}, eighth = {7}, ninth = {8}", 
          //numbers1, numbers2, numbers3, numbers4, numbers5, numbers6, numbers7, numbers8, numbers9); 

       valid = false; 
       if (test > numbers9) 
       { 
        if (test == numbers9) 
         valid = true; 
       } 

       Console.WriteLine("{0}", valid); 

       valid = false; 
       if (numbers9 > test && test < numbers9) 
       { 
        valid = true; 
       } 



       Console.WriteLine("{0}", valid); 

       Console.ReadLine(); 
     } 



      Console.ReadLine(); 
     } 
    } 
} 
+0

사이드 노트 : ple은 매우 길다 - 향후의 질문은 http://www.sscce.org에서 확인하십시오. –

답변

0

왜 모든 Console.ReadLine()이 필요합니까? 코드를 디버깅하면 결과를 인쇄하기 전에 콘솔에서 무언가 (두 번!) 읽을 수 있습니다.

... 
test = (10 -(sum % 10)); 
// Console.WriteLine("{0}", test); 
test = double.Parse(Console.ReadLine()); 
Console.ReadLine(); 
... 

SIN을 읽고 검증하여 결과를 인쇄해야합니다. 첫 번째가 실패 할 경우 두 번째 SIN을 확인하려면

, 당신은 같은 것을 할 수 있습니다

int numberOfValidations = 0; 
bool validSIN = false; 

do{ 
// read SIN 
// validate 
// print result 

numberOfValidations++; 

}while(!validSIN || numberOfValidations <= 2); 

편집

다음

코드와 Ideone에 작동하는 데모입니다 :

DEMO

+0

괜찮아요 내가 여분의 readlines을 제거하지만 여전히 죄를 확인 못해 문제가있어 – Shahze123

+0

@ Shahze123 난 불필요한 readlines없이 코드를 테스트하고 출력을 인쇄 SIN의 유효성을 확인합니다. if의 상황에서 무슨 일이 일어나는지 알아 내기 위해 디버깅을 해보십시오. –

+0

@ Shahze123 코드에 데모를 포함하도록 응답을 편집했습니다 (첫 번째 오류가 발생하는 경우 두 번째 SIN을 확인하기 위해 do-while을 추가). 두 개의 SIN을 검증하고 검증 결과를 출력합니다. –

관련 문제