Java - 确保每个字母都不包含数字

时间:2017-05-28 18:50:49

标签: java

编程很新,只需启动Java类。 这是作业所说的 1.)通过控制台中的问题输入报告所有者的名字作为字符串,并通过输入构建姓氏,一次一个字符。 一个。有条件地检查以确保名字和姓氏不包含任何数字字符,数字介于0到9之间。如果是,则必须将其删除。名称不能包含任何空格或特殊字符。

我已经完成了第一部分,这是我的代码:

package inclassassignment;
import java.util.Scanner;

public class inclassassignment {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println ("Enter your first name");
        String temp; 
        Scanner your_name = new Scanner (System.in);
        temp = your_name.nextLine();
        System.out.println(temp);



        int n = 0;
        System.out.println ("Enter your last name");
        String temp1;
        temp1 = "";
        while (n < 6) {

            System.out.println("Please print the next letter of your last name");
            String nextletter1;
            Scanner lastname = new Scanner (System.in);
            nextletter1 = lastname.nextLine();
            char nextletter = nextletter1.charAt(0);
            temp1 = temp1 + nextletter;
            n++;


        }
        System.out.println(temp1);

        {



        }
    } 


}

//我现在需要做的部分是检查每个ASCII值并确保没有字母包含数字。我很确定这需要一个&#34; if else&#34;声明,但我从来没有写过一个成功的。

编辑:我应该指出,除了带有main方法的类之外,我不允许在任何类中使用任何静态变量或方法。

5 个答案:

答案 0 :(得分:1)

您可以使用正则表达式

Scanner sc=new Scanner(System.in);
String s= sc.nextLine(); //read the string
String regex1 = "\\d+"  // the regular expression for numbers
if(s.matches(regex1))  // check if the string contains numbers
System.out.println("contains numbers");

答案 1 :(得分:1)

我会从实用程序方法开始,根据您所需的规则对名称进行规范化,Character.isUpperCase(char) Character.isLowerCase(char)以及for-each loop超过String.toCharArray()等,

static String normalizeName(String name) {
    StringBuilder sb = new StringBuilder();
    for (char ch : name.toCharArray()) {
        if (Character.isUpperCase(ch) || Character.isLowerCase(ch)) {
            sb.append(ch);
        }
    }
    return sb.toString();
}

然后你可以调用它(我会将它用于firstNamelastName,以保持一致性)。像,

public static void main(String[] args) {
    System.out.println("Enter your first name");
    Scanner scan = new Scanner(System.in);
    String firstName = normalizeName(scan.nextLine());
    System.out.println("Enter your last name");
    String lastName = normalizeName(scan.nextLine());
    System.out.printf("Hello %s %s%n", firstName, lastName);
}

答案 2 :(得分:1)

很确定这张贴在其他地方

str.matches(".*\\d+.*") //检查字符串是否包含数字

答案 3 :(得分:1)

尝试此功能:

public String removeNum(String in){
    String[] input= in.split("");
    String num= "0123456789";
    String[] numbers= num.split("");
    List<String> numbersToDelete = Arrays.asList(numbers);
    for(int i=0;i<input.length;i++){
        if(numbersToDelete.contains(input[i])){
            input[i]="";
        }
    }
    //Converting from Array back to String
    String out = "";
    for(int j=0;j<input.length;j++){
        out=out+input[j];
    }
    return out;
}

答案 4 :(得分:1)

根据你的任务,你可以这样做:

int n = 0;
System.out.println("Enter your last name");
String lastName = "";

while (n < 6) {
    System.out.print("Please print the next letter of your last name: ");
    String tmp = your_name.nextLine();
    char c = tmp.charAt(0);

    if (Character.isAlphabetic(c)) {
        lastName += c;
        n++;
    } else {
        System.out.println("You can use only letters! Try again!");
    }
}

System.out.println(lastName);