1

我是一个尝试学习java的新手。我正在为我的班级做一个项目,我们正在创建一个十六进制-十进制转换器。我已经完成了转换,但是当我打印出十六进制结果时,字母(因为十六进制包含 AF)以小写形式打印出来。我尝试使用以下代码来读取字符数组并将所有小写字符大写:

int i = Integer.parseInt(input);
String hex = Integer.toHexString(i);
char[] hexchar = hex.toCharArray();
for(int j=0; j<=hexchar.length; j++){
   if(hexchar[j].equals("a")){
     hexchar[j]=hexchar[j].toUpperCase();
} 
}

我打算为字母 af 设置此代码,但我不断收到的错误是不能延迟 Char 数组。有谁知道是否有办法读取 char 数组或可以提交可能的解决方法?

4

4 回答 4

3

您不能将其应用于toUpperCase原始字符:它是 String 类的方法。下面的代码应该做你想做的事:

int i = Integer.parseInt(input);
String hex = Integer.toHexString(i).toUpperCase();
于 2012-08-31T23:10:04.707 回答
0

char是原始的。也许你的意思是Character.toUpperCase

final int i = Integer.parseInt(input);
String hex = Integer.toHexString(i);
final char[] cs = hex.toCharArray();
for (int j = cs.length; j > 0; --j) {
  final char ch = cs[j];
  if (Character.isLetter(ch)) {
    cs[j] = Character.toUpperCase(ch);
  }
}
hex = new String(cs);

不过,我不明白这一点;你真的应该使用String.toUpperCase,所以......

final String hex = Integer.toHexString(i).toUpperCase();
于 2012-08-31T23:15:46.797 回答
0

这不应该完美无缺。

int i = Integer.parseInt(input);
    String hex = Integer.toHexString(i);
    System.out.println(hex);
    System.out.println(hex.toUpperCase());

它将所有字符从 af 更改为 AF 并保持数字不变。

于 2012-09-01T09:45:31.280 回答
0

干得好:

import java.util.Scanner;

public class classy
{
    public static void main(String args[])
    {
        Scanner input = new Scanner( System.in );

        int i;

        System.out.println("Please enter an integer");
        i=input.nextInt();

        System.out.printf( "Your Integer  is  %d\n", i );


        String hex=Integer.toHexString(i).toUpperCase();
          System.out.println("Your Hexadecimal Number is  "+hex);
    }
}
于 2012-09-02T18:03:03.123 回答