java如何为同一字符串中的字母和数字创建单独的输出,并输出它们的ASCII值?
import java.util.Scanner;
public class testing
{
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
System.out.println("Please enter a string of any length: ");
String convertMe = stdIn.next();
System.out.printf("%s%15s%15s%10s%n","Initial","ASCII<char>","ASCII<int>",
"Hex";
for(int x=0; x<convertMe.length(); x++)
{
int ascii = (int)convertMe.charAt(x);
System.out.printf("%c %30d %13x%n", convertMe.charAt(x),ascii,ascii);
}
System.out.printf("%n");
System.out.println("Thank you for playing!");
}
}
现在,代码在一列中输出所有ASCII值。我试图根据字符是字母还是数字将该列一分为二。我一直在玩isDigit,但还没能让它工作。由于它是一个字符串,我需要在我的for循环中使用它,以便在后期修复增量中检查是否为true,然后在char列中输出,如果int列中的输出为false,则可能最有效,我只是不知道如何使这项工作对编码来说仍然是非常新的
编辑1:我忘了描述程序LOL。该程序获取字符串的输入,并将字符串打印为字符、ascii值和十六进制。如果字符是一个字母,在字符列下打印,在int下打印数字。空格也应该读作ASCII,十六进制表示空格
Edit2:我和ArrayList玩得很好,但我不认为这是一个可行的选择,因为它会让字符串字符失去顺序来显示它们,因为我必须在这里打印相同的语句,这就是我的目的
public class JMUnit3Ch12
{
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
System.out.println("Please enter a string of any length: ");
String convertMe = stdIn.nextLine();
System.out.printf("%s%15s%15s%10s%n","Initial","ASCII<char>", "ASCII<int>", "Hex");
ArrayList<Integer>numbers = new ArrayList<>();
ArrayList<Integer>letters = new ArrayList<>();
for(int x=0; x<convertMe.length(); x++)
{
int ascii = (int)convertMe.charAt(x);
if(ascii<=57 && ascii>=48)
{
numbers.add(ascii);
}
else
{
letters.add(ascii);
}
//System.out.printf("%c %30d %13x%n", convertMe.charAt(x),ascii,ascii);
}
for(int y :numbers)
{
System.out.printf("%c %30d %13x %n",y,y,y);
}
for(int z: letters)
{
System.out.printf("%c %15d %28x %n",z,z,z);
}
//System.out.println(numbers);
System.out.printf("%n");
System.out.println("Thank you for playing!");
}
}
# 1 楼答案
显然,当您在字符串中迭代时,确定用户输入字符串中的哪些字符是字母字符或数字字符,然后利用printf()格式字符串来适应或
要查看字符串是字母字符还是数字字符,可以使用String.matches()方法,该方法利用Regular Expressions (RegEx)进行确定。在下面的示例代码(这是您修改的代码)中,我们使用\d表达式,它基本上看我们匹配的字符(字符串)是否是数字。如果是,则生成布尔值true,如果不是,则生成布尔值false。在下面的代码中,您会注意到我们使用了\\d而不是\d,这是因为表达式中的反斜杠(\)被称为转义字符,在字符串中使用时也必须转义。所以基本上,你必须摆脱逃逸角色。你最终会找到字符串。matches()方法对于特定场合来说是一种非常方便的方法
如果发现一个字符是字母,则使用一种格式,如果是数字,则使用另一种格式。将所需格式放入字符串变量中,然后在printf()方法中使用该变量
此外,我不知道这是否也存在于IDE中,但您在控制台输出中缺少了显示表头的右括号[)。这应该会造成编译错误
这是:
应该是:
无论如何: