字符串输入到String数组中

时间:2014-04-18 09:01:55

标签: java

import java.util.*;
public class Student {
    private String []  first;
    private String [] last;
    private String [] HKID;
    private String[] SID;
    private int []Exam;
    private int num;
    Scanner kb= new Scanner(System.in);

    public Student (String f, String l, String h, String s, int e, int n){
        System.out.println("Please enter number of students:");
        n =  kb.nextInt();
        for(int i=0;i >n; i++){
            System.out.println("First name:");
            f = kb.next();
            first = new String[f];
            System.out.println("Last name:");
            l=kb.next();
            last= new String[l];
            System.out.println("HKID:");
            h=kb.next();
            HKID=new String[h];
            System.out.println("SID:");
            s=kb.next();
            SID=new String [s];
            System.out.println("Final exam score:");
            e=kb.nextInt();
            Exam=new int [e];
    }

    public String[] getFirst(){return first;}
    public String [] getLast(){return last;}
    public String [] getHKID(){return HKID;}
    public String [] getSID(){return SID;}
    public int [] getExam(){return Exam;}
    public void setFirst(String [] f){f=first;}
    public void setLast(String [] l){l=last;}
    public void setHKID(String [] h){h=HKID;}
    public void setSID(String [] s){s= SID;}
    public void setExam(int [] e){e=Exam;}
}

我正在创建一个代码,首先询问用户在课堂上有多少学生。由此,它要求为每个学生输入几个细节并存储在各自的阵列中。问题:我无法在String数组中输入String变量。我想不出任何解决方法。请帮忙。

3 个答案:

答案 0 :(得分:4)

问题是:

    for(int i=0;i >n; i++)
    {
    }

写下这个:

       for(int i=0;i <n; i++)
       {
       // your code 
       }

您没有初始化String数组。

 import java.util.*;

 class Student 
 {
 private String []  first;
 private String [] last;
 private String [] HKID;
 private String[] SID;
 private int []Exam;
 private int num;
 Scanner kb= new Scanner(System.in);
 int n=0;
public Student (){

   System.out.println("Please enter number of students:");
     n =  kb.nextInt();
     first = new String[n];
     last= new String[n];
     HKID=new String[n];
     SID=new String [n];
     Exam=new int [n];

     for(int i=0;i <n; i++)
     {
        System.out.println("First name:");
        first[i]= kb.next();
        System.out.println("Last name:");
        last[i]=kb.next();
        System.out.println("HKID:");
        HKID[i]=kb.next();
        System.out.println("SID:");
        SID[i]=kb.next();
        System.out.println("Final exam score:");
        Exam[i]= kb.nextInt();
      }
  System.out.print("Student Detail");

  System.out.print("First Name \t Last Name \t HKID \t SID \t Final exam score \n " );

 for(int i=0;i<n;i++)
 {
    System.out.print(first[i]+"\t"+last[i]+"\t"+HKID[i]+"\t"+SID[i]+"\t"+Exam[i]);
    System.out.println();
   }
 }
public static void main (String[] args) {
    new Student();
  }
}

答案 1 :(得分:0)

首先将所有数组初始化为大小'n',你正在外面读取循环。

然后,在你的for循环中你可以直接提到

for(i=o;i<n;i++){
   System.out.println("First name:");
   f = kb.next();
   first[i] = f;
} 

kb.next()返回一个String对象,因此您也可以直接执行first[i]=kb.next();

这里你的代码的主要问题是你传递字符串对象来定义不正确的数组大小(即new String[f]}

希望这有帮助!

一切顺利!

答案 2 :(得分:0)

首先,我不知道为什么要像这样创建构造函数

   public Student (String f, String l, String h, String s, int e, int n)

同时,你覆盖其中的每个参数

第二,将String参数转换为数组的一种方法是

char arr1[]=new char[len1];
arr1=s1.toCharArray()

String []是一个String数组,char []是一个char数组,表示一个String。