| 
 | 
Example:
| 
 | 
Here are some output when you run /home/cs255001/demo/atoi/JavaInput_3.java using 1 digit inputs:
| Enter input: 0 String = 0 ASCII codes (in decimal) for the string: 48 | 
Notice that:
| 
  Input typed          ASCII code (in decimal)
 -------------        -------------------------
      0         ---->         48
      1         ---->         49
      2         ---->         50
      3         ---->         51
      4         ---->         52
      5         ---->         53
      6         ---->         54
      7         ---->         55
      8         ---->         56
      9         ---->         57
 | 
This is because:
Try it yourself. Type any number here:
   
The input corresponds to these binary numbers:
   
Convert the binary number to decimal values and you will find the above mapping.
| 
   if ( input = input1 )
      output = output1;
   else if ( input = input2 )             
      output = output2;
   else
      ....
 | 
| 
//
// File:  /home/cs255001/demo/atoi/JavaInput_5.java
//
// Read in 1 character and add 1 to the input
//
import java.util.Scanner;
public class JavaInput_4
{
   public static void main(String[] args)  throws Exception
   {
      Scanner in = new Scanner(System.in);
      String  s  = null;
      int     x  = 0;
      while ( true )
      {
         System.out.print("Enter input: ");
         s = in.next( );     // Read a String from key board
         if ( s.charAt(0) == '0' )
            x = 0;
         else if ( s.charAt(0) == '1' )
            x = 1;
         else if ( s.charAt(0) == '2' )
            x = 2;
         else if ( s.charAt(0) == '3' )
            x = 3;
         else if ( s.charAt(0) == '4' )
            x = 4;
         else if ( s.charAt(0) == '5' )
            x = 5;
         else if ( s.charAt(0) == '6' )
            x = 6;
         else if ( s.charAt(0) == '7' )
            x = 7;
         else if ( s.charAt(0) == '8' )
            x = 8;
         else if ( s.charAt(0) == '9' )
            x = 9;
         else
         {
            System.out.println("Input '"+s.charAt(0)+"' is NOT a digit !\n");
            continue;
         }
         System.out.println("integer value x = " + x);
         x = x + 1;    // Show that we can compute with x !
         System.out.println("x + 1 = " + x + "\n");
   }
}
 | 
 
        
  
How to run the program:
| 
 | 
| character ASCII code (in decimal) --------- ----------- '0' 48 '1' 49 '2' 50 '3' 51 '4' 52 '5' 53 '6' 54 '7' 55 '8' 56 '9' 57 | 
We can also perform the mapping using this mapping function:
| 
       input - '0'    (≡ input - 48)        
 | 
Because:
| 
  Note: '0' ≡ 48 !!!
  Input typed          ASCII code (in decimal)       mapped input value (in decimal)  
 -------------        -------------------------     -------------------------
     '0'        ---->         48                        48 - 48 = 0
     '1'        ---->         49			49 - 48 = 1
     '2'        ---->         50			50 - 48 = 2
     '3'        ---->         51			51 - 48 = 3
     '4'        ---->         52			52 - 48 = 4
     '5'        ---->         53			53 - 48 = 5
     '6'        ---->         54			54 - 48 = 6
     '7'        ---->         55			55 - 48 = 7
     '8'        ---->         56			56 - 48 = 8
     '9'        ---->         57			57 - 48 = 9
 | 
Here is a Java program that reads in one ASCII digit code, converts it using the above mapping function into an int (2's complement code) so that we can perform an addition (+1) to the value:
| 
//
// File:  /home/cs255001/demo/atoi/JavaInput_4.java
//
// Read in 1 character and add 1 to the input
//
import java.util.Scanner;
public class JavaInput_4
{
   public static void main(String[] args)  throws Exception
   {
      Scanner in = new Scanner(System.in);
      String  s  = null;
      while ( true )
      {
         System.out.print("Enter input: ");
         s = in.next( );     // Read a String from key board
         if ( s.length() > 1 )
         {
            System.out.println("Error: you must type 1 digit !");
            System.out.println("Try again\n");
            continue;
         }
         System.out.println("ASCII codes (in decimal) = " + (int) s.charAt(0) );
         int x = (int) s.charAt(0);
         x = x - '0';         // Convert ASCII repr to 2's complement   
         System.out.println("integer value x = " + x);
         x = x + 1;                                   // Now we can add !!!
         System.out.println("After x+1, x = " + x);
      }
   }
}
 | 
 
        
  
How to run the program:
| 
 | 
| 
 | 
| 
 | 
| 
   int x = (int) s.charAt(0);
   // Convert ASCII repr to 2's complement 
   if ( s.charAt(0) == '0' )          // This test if ASCII code = 48
       x = 0;                         // This assigns 0000.00  to x !!     
   else if ( s.charAt(0) == '1' )
       x = 1;
   else if ( s.charAt(0) == '2' )
       x = 2;
   else if ( s.charAt(0) == '3' )
       x = 3;
   else if ( s.charAt(0) == '4' )
       x = 4;
   else if ( s.charAt(0) == '5' )
       x = 5;
   else if ( s.charAt(0) == '6' )
       x = 6;
   else if ( s.charAt(0) == '7' )
       x = 7;
   else if ( s.charAt(0) == '8' )
       x = 8;
   else if ( s.charAt(0) == '9' )
       x = 9;
 | 
This is the most general way to convert an ASCII code to its corresponding 2s complement value !!