我在介绍基本错误检查时遇到了这个问题,我们必须专门检查数组令牌是否有2个元素。如果数据格式有问题,则通知用户,但继续接受输入。
它需要接受的输入是
退出方案与以前一样,第二个方案将学生及其标记存储在下一个可用的数组索引中;虽然只是返回任何与姓名匹配的学生的标记,但可能会有不止一个这样的学生,其中很多都没有。
import java.util.Scanner;
public class ArrayInput {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String b;
String student[] = new String [50];
String mark [ ]= new String [50];
int i =0;
while ((b=s.nextLine()) != null)
{
if (b.equals("quit")) break ;
String Tokens[] = b.split(b, ';');
//System.out.println(Tokens[0] + ' ' + Tokens[1]);
student[i]=Tokens[0];
mark[i]=Tokens[1];
i++;
}
for(int j=0;j<i;j++)
{
System.out.println(student[j] + ' ' + mark[j]);
}
}
}
答案 0 :(得分:0)
哇。
首先:
String student[] = new String [50];
String mark [ ]= new String [50];
没有。就是不行。从来没有做过这样的事情。当有51时会发生什么?如果你在面试中这样做,你会被护送到门口。建议:
第二
while ((b=s.nextLine()) != null)
{
if (b.equals("quit")) break ;
为什么你不把它写成:
while ((b = s.nextLine()) != null && !b.equals("quit"))
{
第三
String Tokens[] = b.split(";");
最好将类型写为String []并使用小写作为变量(根据Java标准编码约定);你甚至没有看过用于split()方法的Javadoc,所以你写的东西永远不会工作。尝试:
String[] tokens = b.split(b, ';');
(您可能必须转义分号;请查看正则表达式的文档。)
最后,关于你的问题,你只需要验证数组有两个元素吗?
if (tokens.length != 2) {
// this is where you react to the formatting problem
}
我当然希望这只是一些入门的学校项目......