字符、字符串、字符串数组、字符数组之间的转换 蓝桥10转16

最近做的蓝桥杯,对于输出形式的要求比leetcode严苛不少..

1:蓝桥杯的输出并没有规定必须是一个字符串输出

例如:for(String m:res){System.out.print(m);}是多个字符串拼接而成的不含空格的输出

注:for(int m:res){System.out.print(m+"");}表示强制转换int到string类型,之间不含空格

for(int m:res){System.out.print(m+" ");}表示强制转换int到string类型,之间含空格

这也是不同的输出形式的区别

2:java的^表示异或运算符,把数据转换成二进制,然后按位进行运算


注:^不表示多少次方!!应该使用Math.pow(m,n)或者for循环

3:Arrays.toString(a)输出格式为自带“[]”括号,并且,后有空格;

而for增强遍历循环输出格式由人为决定,for增强遍历循环缺点是丢失了下标信息,并且无空格,可直接拼接

4:Switch和for循环是可以联合使用的,只是可能会存在超时问题..(不推荐)

5:变量的定义式如果在for循环内,那么循环外是不能使用的,处理的办法就是在循环外确定初始值

6:for循环的判断式可以是num>=Math.pow(16,n),不仅仅是i<n此类较为简单的变量可分离判断式

7:System.out.println();类似于js的控制台console.log功能,可实时观察某一变量,排查bug可用

8:字符、字符串、字符串数组、字符数组之间的转换

(1)字符数组转换字符串

String str = new String(res);      \\res是字符数组
                System.out.println(str);
                

(2)字符串数组转化字符串(包括整数型数组)

for(String m:res){
    System.out.print(m);  //各种形式的拼接可回看第一点
    //Syetem.out.println(m+" ");  //含空格的拼接字符串
}

或者

System.out.println(Arrays.toString(print).
       replace("[","").replace("]","").replace(",",""));      
      // replace("[","").replace("]","").replace(",","").replace(" ",""));  
//第二行用于去除Arrays.toString的方括号以及逗号,可不用
//第三行用于去除Arrays.toString的方括号以及逗号和空格,也可以让字符串不含空格

再有

 String str = "";
	for(int j=0;j<n;j++)
	{
		str+= print[j]+" ";   //含空格
        //str+= print[j]+"";   //不含空格
	}
		System.out.println(str);

区别在于第一种还是多个字符串拼接,第二种和第三种就是完整的一个字符串

10转16附代码:

import java.util.*;

public class Main{
   public static void main(String args[])
	 {
	   Scanner sc = new Scanner(System.in);
		 int num = sc.nextInt();
		 int n=1;
		 //if(num == 0){return 0;}
		 //if(num == 1){return 1;}
		  for(;num>=Math.pow(16,n);)
			{
			  n++;
			}
		//	System.out.println(n);
		  int[] n16 = new int[n]; 
		  String[] res = new String[n];
		  
			
		  for(int i=0;i<n;i++)
			{
				int xx = 1;
				for(int j=0;j<n-1-i;j++)
				{
					 xx = xx*16; 
				}
                     n16[i]=num/xx;
                     num = num%xx;
				//System.out.println(n16[1]);
			 
				switch(n16[i])
				{
				            case 0:
							res[i] = "0";  
							break;
							
						  case 1:
							res[i] = "1";  //单引号和双引号,一般是区别字符和字符串,但是字符串也能是1个甚至0个字符
							break;
							
						  case 2:
							res[i] = "2";
							break;
							
						  case 3:
							res[i] = "3";
							break;
							
						  case 4:
							res[i] = "4";
							break;
							
						  case 5:
							res[i] = "5";
							break;
							
							case 6:
							res[i] = "6";
							break;
							
							case 7:
							res[i] = "7";
							break;
							
							case 8:
							res[i] = "8";
							break;
							
							case 9:
							res[i] = "9";
							break;
							
							case 10:
							res[i] = "A";
							break;
							
							case 11:
							res[i] = "B";
							break;
							
							case 12:
							res[i] = "C";
							break;
							
							case 13:
							res[i] = "D";
							break;
							
							case 14:
							res[i] = "E";
							break;
							
							case 15:
							res[i] = "F";
							break;
						}
				}
//System.out.println(Arrays.toString(res).
       //replace("[","").replace("]","").replace(",","").replace(" ",""));
		 
			
		 String str = "";
		 for(int z=0;z<n;z++)
	{
		str+= res[z]+"";
	}
		System.out.println(str);
			}	 
		 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值