<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Vigenere {

	public static void main(String[] args) {
		// ç”Ÿæˆå¯†ç&nbsp;è¡¨
		char[] oriCode = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
				'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

		char[][] codeTable = new char[26][26];

		for (int i = 0; i &lt; 26; i++) {
			codeTable[i] = Arrays.copyOf(oriCode, 26);

			char firstChar = oriCode[0];
			for (int k = 0; k &lt; 26-1; k++) {
				oriCode[k] = oriCode[k+1];
			}
			oriCode[26-1] = firstChar;
		}
		
		
		Scanner input = new Scanner(System.in);
		//è¾“å…¥åŠ&nbsp;å¯†ä¿¡æ¯
		System.out.print("è¯·è¾“å…¥åŠ&nbsp;å¯†çš„ä¿¡æ¯: ");
		String line = input.nextLine();
		char[] lines = line.toCharArray();
		
		List&lt;Integer&gt; msgs = new ArrayList&lt;&gt;();
		for (char c : lines) {
			int unicode = (int)c;
			msgs.add(unicode-65);
        }
		
		//è¾“å…¥ç§˜é’¥
		System.out.print("è¯·è¾“å…¥ç§˜é’¥: ");
		String keyLine = input.nextLine();
		char[] keyLines = keyLine.toCharArray();
		
		List&lt;Integer&gt; key = new ArrayList&lt;&gt;();
		for (char c : keyLines) {
			int unicode = (int)c;
			key.add(unicode-65);
        }
		
		System.out.println();
		
		int keyIndex = 0;
		for(int i : msgs) {
			char encryChar = codeTable[i][key.get(keyIndex)];
			System.out.print(encryChar);
			
			//Wrapæ‹“å±•ç§˜é’¥
			keyIndex++;
			if(keyIndex &gt;= key.size()) {
				keyIndex = 0;
			}
		}
	}

}
</pre></body></html>