import java.io.*;
class Example1006
{
public static void main(String[] args) throws IOException
{
//输出流
OutputStream fo=new FileOutputStream("student.dat",true);
DataOutputStream out=new DataOutputStream(fo);
//输入流
        Reader r=new InputStreamReader(System.in);
        BufferedReader in=new BufferedReader(r);
String number,name,english,computer;
int score1,score2;
while(true)
{
System.out.println ("Number:");
name=in.readLine();
if(number.length()==0) 
break;
}
while(true)
{
System.out.println ("Name:");
name=in.readLine();
if(name.length()!=0)
break;
}
while(true)
{
System.out.print("English:");
english=in.readLine();
if(english.length()!=0)
{
try
{
score1=Integer.parseInt(english);
}
catch(NumberFormatException e)
{
continue;
}
break;
}
}
    while(true)
    {
     System.out.println ("Computer:");
     computer=in.readLine();
     if(computer.length()!=0)
     {
     try
     {
     score2=Integer.parseInt(computer);
     }
     catch(NumberFormatException e)
     {
     continue;
     }
         break;
        }
    }
        out.writeUTF(number);
        out.writeUTF(name);
        out.writeInt(score1);
        out.writeInt(score2);
        }
        in.close();
        out.close();
}
照书上打得,用jcreator,为什么会出错????

解决方案 »

  1.   

    有两个问题
    一个是:倒数第4行
    out.writeInt(score2); 
    }
    in.close();
    这里 中间多了一个} 相应的 在最后一行加上一个};第二是,
    while (true) {
        System.out.println("Number:");
        name = in.readLine();
        if (number.length() == 0)  //这里 但是你的number根本没有初始化 所以有问题
            break;
    }
    同样的道理 后面也有 out.writeUTF(number); 
    解决的方法是 在
    String number的时候进行初始化 String number="";或者初始化成其它的字符串
      

  2.   

    谢谢楼上,不过是两个小错误,是我的粗心,好像大问题还没解决???
    import java.io.*;
    class Example1006
    {
    public static void main(String[] args) throws IOException
    {
    //输出流
    OutputStream fo=new FileOutputStream("student.dat",true);
    DataOutputStream out=new DataOutputStream(fo);
    //输入流
                      Reader r=new InputStreamReader(System.in);
                    BufferedReader in=new BufferedReader(r);
    String number,name,english,computer;
    int score1,score2;
    while(true)
    {
    System.out.println ("Number:");
    number=in.readLine();
    if(number.length()==0) 
    break;
    }
    while(true)
    {
    System.out.println ("Name:");
    name=in.readLine();
    if(name.length()!=0)
    break;
    }
    while(true)
    {
    System.out.print("English:");
    english=in.readLine();
    if(english.length()!=0)
    {
    try
    {
    score1=Integer.parseInt(english);
    }
    catch(NumberFormatException e)
    {
    continue;
    }
    break;
    }
    }
           while(true)
           {
         System.out.println ("Computer:");
         computer=in.readLine();
         if(computer.length()!=0)
         {
         try
         {
         score2=Integer.parseInt(computer);
         }
         catch(NumberFormatException e)
         {
         continue;
         }
             break;
            }
            }
                    out.writeUTF(number);
                    out.writeUTF(name);
                    out.writeInt(score1);
                    out.writeInt(score2);
            }
            in.close();
            out.close();
    }
      

  3.   

    想不通为什么会在in.close()和out.close()出现需要标识符错误??
    D:\java作业\第九章\ThisThream.java:67: 需要 <标识符>
            in.close();
                    ^
    D:\java作业\第九章\ThisThream.java:68: 需要 <标识符>
            out.close();
                     ^
    2 错误处理已完成。
      

  4.   

    刚刚回复的有点问题,是in.close之前的}位置错了,导致in.close, out.close 在函数外了。所以提示没有定义。
      

  5.   

    正确程序
    import   java.io.*; 
    class   Example1006 

    public   static   void   main(String[]   args)   throws   IOException 

    // 输出流 
    OutputStream   fo=new   FileOutputStream("student.dat",true); 
    DataOutputStream   out=new   DataOutputStream(fo); 
    // 输入流 
                    Reader   r=new   InputStreamReader(System.in); 
                    BufferedReader   in=new   BufferedReader(r); 
    //String   number,name,english,computer;// number is not initialized
                    String   number="",name,english,computer;// number is not initialized                 
    int   score1,score2; 
    while(true) 

    System.out.println   ("Number:"); 
    name=in.readLine(); 
    if(number.length()==0)   
    break; 

    while(true) 

    System.out.println   ("Name:"); 
    name=in.readLine(); 
    if(name.length()!=0) 
    break; 

    while(true) 

    System.out.print("English:"); 
    english=in.readLine(); 
    if(english.length()!=0) 

    try 

    score1=Integer.parseInt(english); 

    catch(NumberFormatException   e) 

    continue; 

    break; 


            while(true) 
            { 
            System.out.println   ("Computer:"); 
            computer=in.readLine(); 
            if(computer.length()!=0) 
            { 
            try 
            { 
            score2=Integer.parseInt(computer); 
            } 
            catch(NumberFormatException   e) 
            { 
            continue; 
            } 
                    break; 
                    } 
            } 
                    out.writeUTF(number); 
                    out.writeUTF(name); 
                    out.writeInt(score1); 
                    out.writeInt(score2); 
                     //}wrong
                    
                    in.close(); 
                    out.close(); 
    //should be here                
    }