Java实现数字密码发生器
在對銀行賬戶等重要權限設置密碼的時候,我們常常遇到這樣的煩惱:如果為了好記用生日吧,容易被破解,不安全;如果設置不好記的密碼,又擔心自己也會忘記;如果寫在紙上,擔心紙張被別人發現或弄丟了…
這個程序的任務就是把一串拼音字母轉換為6位數字(密碼)。我們可以使用任何好記的拼音串(比如名字,王喜明,就寫:wangximing)作為輸入,程序輸出6位數字。
變換的過程如下:
第一步. 把字符串6個一組折疊起來,比如wangximing則變為:
 wangxi
 ming
第二步. 把所有垂直在同一個位置的字符的ascii碼值相加,得出6個數字,如上面的例子,則得出:
 228 202 220 206 120 105
第三步. 再把每個數字“縮位”處理:就是把每個位的數字相加,得出的數字如果不是一位數字,就再縮位,直到變成一位數字為止。例如: 228 => 2+2+8=12 => 1+2=3
上面的數字縮位后變為:344836, 這就是程序最終的輸出結果!
要求程序從標準輸入接收數據,在標準輸出上輸出結果。
輸入格式為:第一行是一個整數n(<100),表示下邊有多少輸入行,接下來是n行字符串,就是等待變換的字符串。
 輸出格式為:n行變換后的6位密碼。
例如,輸入:
 5
 zhangfeng
 wangximing
 jiujingfazi
 woaibeijingtiananmen
 haohaoxuexi
則輸出:
 772243
 344836
 297332
 716652
 875843
注意:
請仔細調試!您的程序只有能運行出正確結果的時候才有機會得分!
在評卷時使用的輸入數據與試卷中給出的實例數據可能是不同的。
import java.util.ArrayList; import java.util.Scanner;public class Main {public static ArrayList<String> list = new ArrayList<String>();public String getResult(String s) {int[] A = new int[6];for(int i = 0;i < s.length();i++)A[i % 6] = A[i % 6] + s.charAt(i);for(int i = 0;i < 6;i++) {while(A[i] >= 10) {String temp = "" + A[i];int a = 0;for(int j = 0;j < temp.length();j++)a = a + (temp.charAt(j) - '0');A[i] = a;}}StringBuffer t = new StringBuffer("");for(int i = 0;i < 6;i++)t.append(A[i]);return t.toString();}public static void main(String[] args) {Main test = new Main();Scanner in = new Scanner(System.in);int n = in.nextInt();for(int i = 0;i < n;i++) {String s = in.next();list.add(test.getResult(s));}for(int i = 0;i < n;i++)System.out.println(list.get(i));} }總結
以上是生活随笔為你收集整理的Java实现数字密码发生器的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Unity3D插件之FingerGest
- 下一篇: 通过i标签来添加图标
