public class Test{	public static void main(String[] args)	{		Scanner scanner=new Scanner(System.in);		int n=scanner.nextInt();		if (n>=1||n<=10)		{			String strings[]=new String[n];			for (int i = 0; i < n; i++)			{				strings[i]=scanner.next();			}			//使用for each類型的循環			for (String str : strings)			{				//調用transform16To8()靜態方法				transform16To8(str);			}		}else {			scanner.close();			return;		}			}	PRivate static void transform16To8(String str)	{		//初始化StringBuffer類的sb對象,但是這樣的 對象是一個空		StringBuffer sb=new StringBuffer();		//for循環		for (int i = 0; i < str.length(); i++)		{			// 把16進制數的每一位轉換成四位2進制數字			String string=transform16To2(str.charAt(i));			sb.append(string);		}		//將轉換成2進制的數字放入java棧中		Stack<String> stack=new Stack<>();		//最后 i -= 3;這句的意思就是i = i - 3		for (int i = sb.length(); i >=0; i-=3)		{			int start= i-3 >=0 ? i-3 : 0;			//截取字符串			String temp=sb.substring(start,i);			// 從后向前每三位2進制數字轉換成一位8進制數字,存儲在棧中。			stack.add(transform12To8(temp));		}		//判斷棧頂是否有0        while (stack.peek().equals("0")) {         	// 刪除前面的多余的0            stack.pop();          }          while (!stack.isEmpty()) {              System.out.print(stack.pop());          }          System.out.println();  			}	private static String transform12To8(String str)	{		    int result = 0;  	        for (int i = 0; i < str.length(); i++) {  	            result += Math.pow(2, str.length() - 1 - i) * (str.charAt(i) - '0');	        }  	        return result + "";  	}	private static String transform16To2(char c)	{				int temp=c>='A'?c - 'A' + 10 : c - '0';		int[] a=new int[4];		int i = 0;		for (; i < a.length; i++)		{			//取temp的余數			a[i]=temp%2;			temp /= 2;  		}		i--;		StringBuffer sb =new StringBuffer();		//逆序排列		for (; i>=0; i--)		{			sb.append(a[i]);		}		return sb.toString();	}	}新聞熱點
疑難解答