数组输入java

时间:2015-02-04 16:45:32

标签: java arrays

我在介绍基本错误检查时遇到了这个问题,我们必须专门检查数组令牌是否有2个元素。如果数据格式有问题,则通知用户,但继续接受输入。

它需要接受的输入是

  1. 退出
  2. 把标记名称
  3. 获取姓名
  4. 退出方案与以前一样,第二个方案将学生及其标记存储在下一个可用的数组索引中;虽然只是返回任何与姓名匹配的学生的标记,但可能会有不止一个这样的学生,其中很多都没有。

    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]);
            }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

哇。

首先:

String student[] = new String [50];
String mark [ ]= new String [50];

没有。就是不行。从来没有做过这样的事情。当有51时会发生什么?如果你在面试中这样做,你会被护送到门口。建议:

  1. 创建一个&#34;学生&#34;具有&#34;名称&#34;的类和#34;标记&#34;。财产,领域,等等。
  2. 创建学生类型列表。使用自动增长的数据类型(如ArrayList)。
  3. 第二

    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
    }
    

    我当然希望这只是一些入门的学校项目......