sexta-feira, 10 de abril de 2015

0.0.0.17.8.1 - Métodos e locais por uso

001 import java.util.Scanner;
002 /**
003     Esta Ã© o aperfeiçoamento do código do Conversor2. Converter as variáveis
004     globais em locais pelo critério de uso: o que Ã© usado somente em um
005     método deve ser local ao método. 
006 */
007 
008 public class Conversor3 {
009     static int num10; // numero base 10 - destruido na conversao
010     static String num12; // numero base 12;
011     static Scanner sc=new Scanner (System.in)// leitor de teclado
012 
013     /**
014         Este Ã© o ponto de entrada do programa: o método que Ã© invocado
015         pela JVM.
016         Pergunta ao usuário que conversor ele deseja usar e invoca
017         o método que faz a conversão. Permite também que o usuário
018         termine o programa e que refaça a escolha caso tenha digitado
019         uma opção que não existe.
020     */
021     public static void main (String[] args){
022         int opt=0// opcao de conversao - usada somente neste método.
023         do {
024             System.out.println ("1 para 10->12; 2 para 12->10; 3 para sair");
025             System.out.println ("(inteiros - tipo diferente dá pau.)");
026             opt=sc.nextInt();
027             switch (opt) {
028                 case 1// 10->12;
029                     dez2doze();   // invocação do método
030                     break;
031                 case 2// 12->10;
032                     doze2dez();    // invocação do método
033                     break;
034                 case 3break;
035                 default:
036                     System.out.println ("Digite novamente.");
037             }
038         while (opt!=3);
039     }
040     
041     /** Esta Ã© a declaração, ou definição do método. Dizemos como deve
042     ser a invocação (a assinatura do método) e o que ele deve fazer 
043     (o bloco de código do método).
044     Este método pergunta ao usuário o valor inteiro na base 10 que
045     o usuário deseja converter, converte-o para um String que 
046     representa o número na base 12 e o escreve na tela.
047     A conversão Ã© feita por divisões sucessivas.
048     */
049     public static void dez2doze () {
050         int m;  // digito para conversor 10->12 - usado somente neste método
051         System.out.println ("Digite o número decimal.");
052         System.out.println ("(inteiros - tipo diferente dá pau.)");
053         num10=sc.nextInt();
054         num12="";
055         while (num10>0) {
056             m=num10%12;
057             num10/=12;
058             switch (m) {
059                 case 0:
060                     num12='A'+num12;
061                     break;
062                 case 1:
063                     num12='B'+num12;
064                     break;
065                 case 2:
066                     num12='C'+num12;
067                     break;
068                 case 3:
069                     num12='D'+num12;
070                     break;
071                 case 4:
072                     num12='E'+num12;
073                     break;
074                 case 5:
075                     num12='F'+num12;
076                     break;
077                 case 6:
078                     num12='G'+num12;
079                     break;
080                 case 7:
081                     num12='H'+num12;
082                     break;
083                 case 8:
084                     num12='I'+num12;
085                     break;
086                 case 9:
087                     num12='J'+num12;
088                     break;
089                 case 10:
090                     num12='K'+num12;
091                     break;
092                 case 11:
093                     num12='L'+num12;
094                     break;
095                 default
096                     System.out.println ("Erro desconhecido.");
097             }
098         }
099         System.out.println ("Resultado:" + num12);
100     }
101 
102     /**
103     Este método pergunta ao usuário o valor na base 12 que
104     o usuário deseja converter, recebe-o como String, converte-o em 
105     número inteiro na base 10 e o escreve na tela.
106     A conversão Ã© feita por soma de produto do dígito por potência.
107     */
108     public static void doze2dez () {
109         /*i, c, numErr, len são usados somente neste método. */
110         int i;  // contador para conversor 12 ->10
111         char c; // caracter corrente para conversor 12->10
112         boolean numErr; // flag de erro no numero base 12
113         int len;// comprimento do número base 12
114 
115         System.out.println ("Digite o número base 12.");
116         num12=sc.next();
117         len=num12.length();
118         numErr=false;
119         num10=0;
120         i=0;
121         while ((i<len)&&(!numErr)){
122             c=num12.charAt(i);
123             i++;
124             num10*=12;
125             switch (c) {
126                 case 'A':
127                     num10+=0;
128                     break;
129                 case 'B':
130                     num10+=1;
131                     break;
132                 case 'C':
133                     num10+=2;
134                     break;
135                 case 'D':
136                     num10+=3;
137                     break;
138                 case 'E':
139                     num10+=4;
140                     break;
141                 case 'F':
142                     num10+=5;
143                     break;
144                 case 'G':
145                     num10+=6;
146                     break;
147                 case 'H':
148                     num10+=7;
149                     break;
150                 case 'I':
151                     num10+=8;
152                     break;
153                 case 'J':
154                     num10+=9;
155                     break;
156                 case 'K':
157                     num10+=10;
158                     break;
159                 case 'L':
160                     num10+=11;
161                     break;
162                 default
163                     System.out.println ("Erro dígito não corresponde a número.");
164                     numErr=true;
165             }
166         }
167         if (!numErrSystem.out.println ("Resultado:" + num10);
168     }
169 
170 }
Java2html

Nenhum comentário:

Postar um comentário