java将字符数组中的搜索字符替换为其索引值(如果找到)
//这里我尝试在char数组中查找char的位置。 如果字符在数组中重新出现,则将其原始值替换为其整数索引。但是当我试图编译它时,我得到了一些不可打印的输出。所以请帮帮我。我的意思是,当我尝试访问数组元素时,必须看到上述操作的效果
class Re{
public static void main(String [] args)
{
Scanner input = new Scanner(System.in);
String enter = input.nextLine();
char [] array = enter.toCharArray();
char find = input.next().charAt(0);
char find2 = Character.toUpperCase(find);
char find3 = Character.toLowerCase(find);
for (int i=0;i<array.length;i++)
{
if((find2==array[i])|| ( find3==array[i]))
{
array[i] = (char)(i);
}
else
{
array[i] =array[i];
}
}
for(i=0;i<array.length;i++)
{
System.out.print(array[i]);
}
}
}
# 1 楼答案
你可以这样做:
# 2 楼答案
Unicode有很多不可打印的字符。请参阅ASCII table了解您可能获得的字符(UTF-16的前127个字符与ASCII相同)。如果你想把一个整数转换成它对应的字符值,你能做的就是给它加上
'0'
例:
如果我>;9那么它不能转换为数字字符(只有一位数),所以必须使用字符串
例:
您还可以使用Character#forDigit形式的
Character.forDigit(i, 10)
,它可以返回上面的表达式('0' + digit
),如果数字是>;9('a' + digit - 10)
或如果数字在基数之外,则为空字符。IECharacter.forDigit(10, 10)
返回空字符,但Character.forDigit(10, 16)
(十六进制)返回'a'
当您在字符和基本数字类型(int、short等)之间转换时,您使用的是Unicode码点。例如
(char)9
实际上是制表符。Unicode数字对应于代码48-57。因为这些数字是连续的(0对应48,1对应49,2对应50,等等),所以可以将'0'
的值相加,得到相应的字符。例如48 + 2 = 50
所以'0' + 2 = '2'
。由于代数的原因,你当然也可以通过减法把一个字符转换成一个整数