Java 如何在同一for循环中排除字符和整数?

Java 如何在同一for循环中排除字符和整数?,java,Java,我已经想了好几个小时了,但没有结果。基本上,我需要将用户输入打印为初始值、ASCII(字符)、ASCII(int)和十六进制。我可以让一切工作,但我不应该有字符值打印,如果它是一个数字,int值打印,如果它是一个字符。我可以让一切都正常工作,但我无法找出如何排除同一for循环中的字母和数字。它的印刷方式相当严格。下面的代码将打印初始值、ASCII(字符)和十六进制值。我还有另一个if语句,它可以自己打印ASCII(int)-但是很明显,如果我包含该if语句,它将排除所有内容。。任何帮助都会令人惊

我已经想了好几个小时了,但没有结果。基本上,我需要将用户输入打印为初始值、ASCII(字符)、ASCII(int)和十六进制。我可以让一切工作,但我不应该有字符值打印,如果它是一个数字,int值打印,如果它是一个字符。我可以让一切都正常工作,但我无法找出如何排除同一for循环中的字母和数字。它的印刷方式相当严格。下面的代码将打印初始值、ASCII(字符)和十六进制值。我还有另一个if语句,它可以自己打印ASCII(int)-但是很明显,如果我包含该if语句,它将排除所有内容。。任何帮助都会令人惊讶的谢谢你

“输出应该是什么样子”

import java.util.*;
/****************************************************************************************
HNUNT3CH12.java
xx
编写一个获取字符串输入的程序,然后输出初始字符ascii
字符和数字的值,以及每个字符的十六进制值。重复,直到退出。
获取包含任意长度的数字和字母的字符串的输入
使用带有后缀符号的for循环在字符串中递增,打印
以下:
起始数字/字符
每个字符的ASCII值
转换为字符串的每个整数的ASCII值
仅输出字母的ASCII(字符)和整数的ASCII(整数)
空格应仅输出ASCII(字符)和十六进制
以大写形式输出的每个整数/字符的十六进制值
输出“谢谢您玩!”
****************************************************************************************/
公共类HNUT3CH12
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
最终字符串头=“%-10s%-15s%-15s%s”;
//最终字符串输出=“%s\n%-15s\n%-15s\n%s”;
字符串用户字符串;
System.out.print(“请输入任意长度的字符串:”);
userString=input.nextLine();
System.out.printf(标题“\n初始”、“ASCII(字符)”、“ASCII(int)”、“十六进制”\n);
对于(int i=0;i
您的代码存在多个问题

  • 示例输出具有8、16和16宽的列。你的格式应该反映这一点

  • 既然第二个
    printf
    使用
    %n
    ,您已经知道它是如何工作的,那么为什么第一个
    printf
    不使用它呢

    System.out.printf("%n%-8s%-16s%-16s%s%n", "Initial", "ASCII(char)", "ASCII(int)", "Hex");
    
  • 要以十进制打印数字,请使用
    %d
    ;要以十六进制打印数字,请使用
    %x
    。要始终将十六进制打印为两位数字,请使用
    %02x

    // for char
    System.out.printf("%-24s%-16d%02x%n", ch, (int)ch, (int)ch);
    
    // for int
    System.out.printf("%-8s%-32d%02x%n", ch, (int)ch, (int)ch);
    
由于
printf
为您完成所有工作,因此您的代码很简单:

System.out.printf("%n%-8s%-16s%-16s%s%n", "Initial", "ASCII(char)", "ASCII(int)", "Hex");
for (int i = 0; i < userString.length(); i ++) {
    char ch = userString.charAt(i);
    if (Character.isDigit(ch)) {
        System.out.printf("%-24s%-16d%02x%n", ch, (int)ch, (int)ch);
    } else {
        System.out.printf("%-8s%-32d%02x%n", ch, (int)ch, (int)ch);
    }
}
System.out.printf(“%n%-8s%-16s%-16s%s%n”、“首字母”、“ASCII(字符)”、“ASCII(整数)”、“十六进制”);
对于(int i=0;i
您应该有两个不同的printf,一个用于数字,另一个用于非数字
System.out.printf("%n%-8s%-16s%-16s%s%n", "Initial", "ASCII(char)", "ASCII(int)", "Hex");
for (int i = 0; i < userString.length(); i ++) {
    char ch = userString.charAt(i);
    if (Character.isDigit(ch)) {
        System.out.printf("%-24s%-16d%02x%n", ch, (int)ch, (int)ch);
    } else {
        System.out.printf("%-8s%-32d%02x%n", ch, (int)ch, (int)ch);
    }
}