import java.io.*;
import java.util.*;
public class St {
        ArrayList al;
St(){
 al= new ArrayList();
 
 }
void add(String s){

al.add(s);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
St stt = new St(); 
DataInputStream dis = new DataInputStream(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入学生编号的个数");
int num=dis.read();
for(int i=0;i<num;i++)
{
System.out.println("第"+(i+1)+"个学生的编号");

stt.add(br.readLine());
System.out.println(stt.al.get(i).toString());
}
                }catch(IOException e){e.printStackTrace();}
     
}
}//question1,循环怎么停下来 how to make it stop
//question2,怎么循环开始会出现两个输入  what's happens in the begin of scope

解决方案 »

  1.   

    就是输入学生的信息(for example:name),按字符串大小排序
      

  2.   

    //question1,循环怎么停下来 how to make it stop 
    你的dis.read()读到的是一个字符(正好一个字节),返回的是它的Ascii码值,不是循环不结束,而是几十次,减掉48就得到你想要的。
    //question2,怎么循环开始会出现两个输入  what's happens in the begin of scope
    i=0时,br.readline读到上次的回车,并在al中添加"",所以就出现了你所看到的情况。DataInputStream dis = new DataInputStream(System.in); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    为什么要两个?去掉一个。