gpt4 book ai didi

java - 进行排序时还会检查输入的名称是否是单词(即,它包含字母而不是数字或标点符号等字符)

转载 作者:行者123 更新时间:2023-11-30 03:00:51 25 4
gpt4 key购买 nike

所以我有这段代码,它接受一个名称数组并按字母顺序对它们进行排序。我想知道如何让它检查输入的名称是否是单词(即它的字符是字母而不是数字或标点符号等)。如果没有打印出“输入的名称不正确,则重新运行代码”之类的信息,感谢您的高级帮助!

import java.util.Scanner;

public class Alphabetical_Order

{
public static void main(String[] args)


{

int n;

String temp;
Scanner s = new Scanner(System.in);
System.out.print("Enter number of names you want to enter:");
n = s.nextInt();
String names[] = new String[n];
Scanner s1 = new Scanner(System.in);
System.out.println("Enter all the names:");
for(int i = 0; i < n; i++)
{
names[i] = s1.nextLine();
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (names[i].compareTo(names[j])>0)
{
temp = names[i];
names[i] = names[j];
names[j] = temp;
}
}
}
System.out.print("Sorted Order:");
for (int i = 0; i < n - 1; i++)
{
System.out.print(names[i] + ",");
}
System.out.print(names[n - 1]);
}
}

最佳答案

根据您对“字母”的定义,可以使用以下其中一项:

private static boolean isAllEnglishLetters(String text) {
return text.matches("[a-zA-Z]+");
}
private static boolean isAllEnglishLetters(String text) {
return text.matches("\\p{Alpha}+"); // An alphabetic character: [a-zA-Z]
}
private static boolean isAllUnicodeLetters(String text) {
return text.matches("\\p{L}+"); // A unicode letter category
}

测试

public static void main(String[] args) {
System.out.printf("%17s %s%n", "English", "Unicode");
test("John");
test("JohnDoe");
test("Schäfer");
test("John2");
test("John.Doe");
test("John Doe");
}
private static void test(String text) {
System.out.printf("%-10s %-5s %-5s%n", text, isAllEnglishLetters(text),
isAllUnicodeLetters(text));
}

输出

          English Unicode
John true true
JohnDoe true true
Schäfer false true <-- Notice this
John2 false false
John.Doe false false
John Doe false false
<小时/>

更新

上面的代码显示了一个可重用的方法,可以在需要时简单地调用它。您当然可以直接执行 matches() 调用,例如

for(int i = 0; i < n; i++)
{
names[i] = s1.nextLine();
if (! names[i].matches("\\p{L}+"))
{
System.out.println("name entered is incorrect re run code");
return; // exit program
}
}

关于java - 进行排序时还会检查输入的名称是否是单词(即,它包含字母而不是数字或标点符号等字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36025461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com