sexta-feira, 10 de abril de 2015

0.0.0.17.8.2 - Métodos e locais por persistência de valor

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

Nenhum comentário:

Postar um comentário