编程很新,只需启动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方法的类之外,我不允许在任何类中使用任何静态变量或方法。
答案 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();
}
然后你可以调用它(我会将它用于firstName
和lastName
,以保持一致性)。像,
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);