我正在做一个学校JAVA项目,我要求用户输入一个8位数的字符串,后面跟一个字母,我必须验证:
我会在这里粘贴给定的列表和位置
我不太确定从哪里开始......所以我到目前为止唯一做的就是:
import java.util.Scanner;
public class Practice {
static final char[] LETTERS = {'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X'
,'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C'
, 'K', 'E'};
String [][] input;
public static void main (String[] args){
Scanner scanner = new Scanner (System.in);
System.out.print("Please input: ");
}
}
知道如何开始这个吗?任何帮助都会被接受。谢谢!
我需要做的是:
答案 0 :(得分:1)
我会给你一些设计思路而不是代码,这样你就可以自己写下来了:
考虑如何存储用户输入(例如,它是char
的列表,可能是String
吗?) - 这取决于你更习惯的工作但我建议使用String
您需要什么方法?如果您将任务分解为许多不同的检查,您可能需要
首先检查字符串的长度(你可以为此编写一个方法,但它只是一行代码,所以我不建议这样做),
然后检查除最后一个字符以外的所有字符是否为数字,最后一个字符是String
(您可以获得前7个字符代表的substring
并尝试{ {1}} parse
,然后您可以检查最后一个字符是否为字母(类Integer
中有内置方法用于检查此字符以及Character
用于处理String
)
然后可能是一个不同的方法,检查模数为23的前7个字符所代表的数字是给定String
数组中最后一个字母的索引
当您拥有所有检查方法时(我认为您应该char[]
每个方法应检查其内部的内容,例如assert
或assert(input.length == 8)
自定义或如果检查失败,内置throw
你可以在主方法中将它们链接起来(即一个接一个地调用它们)
答案 1 :(得分:1)
您需要一步一步地执行此操作:
Integer.parseInt(...)
。如果它抛出NumberFormatException
,请再次请求输入。示例:
class Example{
final char[] LETTERS = {'T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X'
,'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C'
, 'K', 'E'};
boolean isLastCharacterValid(int number, char c){ //c means the 9th character, number is the numeric value of first 8 characters
return (c == LETTERS[number % LETTERS.length]);
}
}
do-while
循环对您的情况会更好。
答案 2 :(得分:0)
您可以使用:
int i = scanner.nextInt();
String str=""+i;
if (str.length() != 8) {
// ERROR
}
char c = scanner.nextChar();
...
那里有一些例子:
https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html