import java.io.*;
import java.util.*;
public class St { /**
 * @param args
 */
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{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输入学生编号的个数");
int num=br.read()-48;

String[] s = new String[100];
for(int i=0;i<num;i++)
{
System.out.println("第"+(i+1)+"个学生的编号");
if(br.readLine()=="") br.readLine();    //就是这里,,
s[i] = br.readLine();
System.out.println(s[i]);

}
}catch(IOException e){e.printStackTrace();}


}}按Enter后 readLine()会接受一个"", 明显不是我想要的,怎么消除?

解决方案 »

  1.   

    改为String str = null;
    if((str = br.readLine())!=null) 
    s[i] = str ;
    System.out.println(str ); 
      

  2.   


        String str = br.readLine(); 
        if(str != null)  
            s[i] = str ; 
        System.out.println(str );  
      

  3.   

    改如下:
    for(int i=0;i <num;i++)
    {
    System.out.println("第"+(i+1)+"个学生的编号");
    String temp=br.readLine();
    while(temp!=null)
    if(temp=="") temp=br.readLine(); 
    else break;   
    s[i] = temp;
    System.out.println(s[i]);}
    }catch(IOException e){e.printStackTrace();}
      

  4.   


    String str = br.readLine(); 
        if(str != null && 0 != str.length())  
            s[i] = str ; 
        System.out.println(str ); 
      

  5.   


    String str = br.readLine(); 
        if(str != null && 0 != str.length())  
            s[i] = str ; 
        System.out.println(str ); 
      

  6.   


    在这段代码前可能要加个
    br.flush();
    以清除键盘输入的多余符号(换行符)
      

  7.   


    BufferedReader 类有flush方法吗?显然没有
      

  8.   


    package zhao;import java.io.*; 
    import java.util.*; 
    public class St { /** 
     * @param args 
     */ 
    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{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("请输入学生编号的个数"); 
    int num=br.read()-48; //这里,你读取一次之后,光标已经是在第二个字符前面了,这样你再读取br.readLine()的时候是读取的是从第2个字符开始!String[] s = new String[100]; 
    for(int i=0;i <num;i++) 

    System.out.println("第"+(i+1)+"个学生的编号"); String str = null; 
    if((str = br.readLine())!=null)  
    s[i] = str ; 
    System.out.println(str );} 
    }catch(IOException e){e.printStackTrace();} 
    } }
      

  9.   


    用这个吧
    in.flush()
    应该可以吧