因为我正在学习java,所以我也很难做我希望我的程序做的事情。我正在看新星学习,然而,他教我一切,即如何格式化用户输入。
到目前为止,这是我的代码。
import java.util.Scanner;
public class FitnessExtreme {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Welcome to FitnessExtreme Centre");
System.out.println(" XX XX");
System.out.println(" XX XX");
System.out.println(" XXXX");
System.out.println(" XX XX");
System.out.println(" XX XX");
int membership = 299;
double tax = 1.25;
double total = membership*tax;
// Scans for user input
Scanner scan = new Scanner(System.in);
// Retrieves customer name
System.out.println("First name: ");
String fname = scan.next();
System.out.println("Last name: ");
String lname = scan.next();
// Retrieves CPR number
System.out.println("CPR number: ");
String cpr = scan.next();
// Validate CPR format
if(cpr.length() != 11) {
System.out.println("Format was not met, please try again");
System.out.println("CPR number: ");
cpr = scan.next();
}
// Retrieves Telephone number
System.out.println("Telephone number: ");
String phone = scan.next();
// Retrieves Address
System.out.println("House number: ");
String hnumber = scan.next();
System.out.println("Street name: ");
String sname = scan.next();
System.out.println("Post code: ");
String pcode = scan.next();
// Customer print out
System.out.println("Thank you " + fname + " " + lname);
System.out.println("I have registered following information on you: ");
System.out.println("CPR number: " + cpr);
System.out.println("Telephone number: " + phone);
System.out.println("House number: " + hnumber);
System.out.println("Street name: " + sname);
System.out.println("Post code " + pcode);
// Continue?
System.out.println("");
System.out.println("If this information is correct and you want to continue, please enter 'yes'");
String verify = scan.next();
if(verify.equals("yes")) {
System.out.println("Alright " + fname + " your price is gonna be:");
System.out.println("Membership subscription - subtotal: " + membership);
System.out.println("VAT " + tax);
System.out.println("Total: " + total);
}
}
}
所以我需要格式化用户输入“cpr”,我需要采用###### - ####格式。我得到了长度部分,但是,如果用户不满足关于格式的要求,我想说它请再试一次,就像我用cpr做的那样。我在Google上找到了多种格式的指南,但我找不到按照我想要的方式进行格式化的指南。
谁比你们好!如果您有关于如何改进我的计划的提示,请分享。
答案 0 :(得分:1)
对于初学者,我建议不是“最短”的解决方案,而是一个容易理解的解决方案。
你说你想要这种格式###### - ####;换句话说:6位数,短划线,4位数。
您可以为此构建一个支票:
要检查字符是否为数字,您可以使用Character.isDigit()。
如果有效,您可以将该检查合并为一个正则表达式;并试验一下。
但正如所说;初学者应该从手动完成这些事情开始。了解正在发生的事情;只有这样;继续前进,研究更强大,更复杂的解决方案。
答案 1 :(得分:1)
为您提供现在可以运行的解决方案。执行时,请注意它会告诉您有3个匹配项。您可以随意修改INPUT
,以便了解有关正则表达式的更多信息
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
private static final String REGEX = "\\d{5}-\\d{3}";
private static final String INPUT = "12345-123 12345-123......... 55555-333";
public static void main( String args[] ){
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT); // get a matcher object
int count = 0;
while(m.find()) {
count++;
System.out.println("Match number "+count);
System.out.println("start(): "+m.start());
System.out.println("end(): "+m.end());
}
}
}
答案 2 :(得分:0)
自从我使用java语法以来已经有一段时间了,但是让我提供这个......
经过长度检查后,检查第7个字符是否确实是' - '。我相信大多数字符串都使用Mid()函数。
如果CPR编号始终是数字 - 数字,那么您还可以检查左侧6个字符是否为数字(我认为IsNumber或IsNumeric或IsInt应该可以正常工作)。并且右边4是一个数字。
我希望这会有所帮助。