高手,这是我写的一个“验证授权码”的类文件的源代码:
    package d_port_package;import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;public class ManageOurSysFuctionRightsConfirm extends Thread{
char[] rightscode = new char[33];
char[] rightbuffer = new char[8];
String MyUserRights = null;
String MyUserRole = null;
String MyUserSysNum = null;
String MyObjRole = null;
String MyObjSysNum = null;
Integer MyObjSysNumInt = -1;
String[] house = null;
Socket so = null;
int[] data = {0,0,0,0,0,0,0,0};
int userCodeTime = 0;
DataOutputStream dops = null;

public ManageOurSysFuctionRightsConfirm(String MyData,Socket s){
house = MyData.split("[%%]");
MyUserRole = house[0];
MyUserSysNum = house[1];
MyObjRole = house[2];
MyObjSysNumInt = Integer.parseInt(house[3]);
MyUserRights = house[4];
so = s;
try {
dops = new DataOutputStream(so.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void run(){
rightscode = MyUserRights.toCharArray();
rightbuffer[0]=rightscode[29];
rightbuffer[1]=rightscode[30];
rightbuffer[2]=rightscode[31];
rightbuffer[3]=rightscode[32];
rightbuffer[4]=rightscode[33];
rightbuffer[5]=rightscode[34];
rightbuffer[6]=rightscode[35];
rightbuffer[7]=rightscode[36];
for(int i=0;i<8;i++){
data[i]=Integer.parseInt(String.valueOf(rightbuffer[i]));
}
userCodeTime = data[0]*10000000+data[1]*1000000+data[2]*100000+data[3]*10000+data[4]*1000+data[5]*100+data[6]*10+data[7];
GetTheSysData.getTheLocalData();
int LocalTime = Integer.parseInt(GetTheSysData.datatime);
if(userCodeTime<LocalTime){
try {
dops.writeUTF("8##0##The_code_Outof_effective_date");
break outer;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if((rightscode[2]+rightscode[6])%5==2){
if(rightscode[0]*2/rightscode[8]==3&&(rightscode[1]+rightscode[10])%5==8&&(rightscode[22]+rightscode[28]==200)){
if(!(65<=rightscode[19]&&rightscode[19]<=66)){
if(rightscode[26]==rightscode[19]+100){
try {
dops.writeUTF("8##0##OKay!!We_are_partner!!");//用户所提交的授权码合法.
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
try {
dops.writeUTF("8##0##Sorry!!invalidCode!!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if(!(81<=rightscode[19]&&rightscode[19]<=90)){
if(rightscode[26]==rightscode[19]+10){
try {
dops.writeUTF("8##0##OKay!!We_are_partner!!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
try {
dops = new DataOutputStream(D_Updata_c_port_Data.mapCustomeronline.get(MyObjSysNumInt).Myso1.getOutputStream());
dops.writeUTF("8##0##Sorry!!invalidCode!!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
}
}else{
outer:
try {
dops.writeUTF("8##0##Sorry!!invalidCode!!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
}    为什么在他的第57行和第103行,出现了“The label outer is missing”的错误和“The label outer is never explicitly referenced”的警告呢...?
    是什么原因造成的...?怎么修改?
    谢谢高手!!
    调试java源代码Java排错

解决方案 »

  1.   

    GetTheSysData 和 D_Updata_c_port_Data 都是什么对象啊,是你自己定义的嘛,在我的开发环境下直接提示类找不到...怎么帮你查看问题?
      

  2.   

    上面是两个弟我自己写的类文件,其中的GetTheSysData类的辅助计算,就是起到一个“拿出系统的目前以:
        yyyy-mm-dd
        的格式来写的时间,比如:20130928,这样的格式的时间.
        并且,这里的D_Updata_c_port_Data类的参与计算,就是为了拿出D_Updata_c_port_Data类中所定义的一个“全局作用域的HashMap”,来让整个本类进行“在第92行拿出HashMap中所存储的值:用户的Socket水管”“进行SocketObj.getOutputStream()”语句的调用书写..
        希望希元首和Bairrfhoinn两位哥哥,能够从弟我的这个代码的结构来进行判断:
        上面的两个类文件,在本类中起到的作用,弟我已经说到了...
      

  3.   

    编辑器的提示已经非常明显了,the label outer is missing,它的意思是说,你的标签outer所在代码位置,上面的那個地方访问不到,其实这是壹個代码的有效范围的问题。我的建议是,你可以把下面那個outer标签去掉,直接把底部的代码替换57行,就像下面这样:try {
    dops.writeUTF("8##0##The_code_Outof_effective_date");
    try {
    dops.writeUTF("8##0##Sorry!!invalidCode!!");
    } catch (IOException e) {
    e.printStackTrace();
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    ...//这里多余的代码省略
    }else{
    try {
    dops.writeUTF("8##0##Sorry!!invalidCode!!");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
      

  4.   

    Bairrfhoinn哥,您能够提示得“再详细些”吗...?
        我希望能够得到:
        面向弟我的编译器的环境,所进行的“行号对应”的提示...
       谢谢Bairrfhoinn 哥!!
      

  5.   

    这样总可以了吧。CSDN 的论坛真心做的不怎么样,你给我的回复完全看不到提示,非得我自己回到帖子里来浏览才行。package d_port_package;import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;public class ManageOurSysFuctionRightsConfirm extends Thread{
    char[] rightscode = new char[33];
    char[] rightbuffer = new char[8];
    String MyUserRights = null;
    String MyUserRole = null;
    String MyUserSysNum = null;
    String MyObjRole = null;
    String MyObjSysNum = null;
    Integer MyObjSysNumInt = -1;
    String[] house = null;
    Socket so = null;
    int[] data = {0,0,0,0,0,0,0,0};
    int userCodeTime = 0;
    DataOutputStream dops = null;

    public ManageOurSysFuctionRightsConfirm(String MyData,Socket s){
    house = MyData.split("[%%]");
    MyUserRole = house[0];
    MyUserSysNum = house[1];
    MyObjRole = house[2];
    MyObjSysNumInt = Integer.parseInt(house[3]);
    MyUserRights = house[4];
    so = s;
    try {
    dops = new DataOutputStream(so.getOutputStream());
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    public void run(){
    rightscode = MyUserRights.toCharArray();
    rightbuffer[0]=rightscode[29];
    rightbuffer[1]=rightscode[30];
    rightbuffer[2]=rightscode[31];
    rightbuffer[3]=rightscode[32];
    rightbuffer[4]=rightscode[33];
    rightbuffer[5]=rightscode[34];
    rightbuffer[6]=rightscode[35];
    rightbuffer[7]=rightscode[36];
    for(int i=0;i<8;i++){
    data[i]=Integer.parseInt(String.valueOf(rightbuffer[i]));
    }
    userCodeTime = data[0]*10000000+data[1]*1000000+data[2]*100000+data[3]*10000+data[4]*1000+data[5]*100+data[6]*10+data[7];
    GetTheSysData.getTheLocalData();
    int LocalTime = Integer.parseInt(GetTheSysData.datatime);
    if(userCodeTime<LocalTime){
    try {
    dops.writeUTF("8##0##The_code_Outof_effective_date");
    dops.writeUTF("8##0##Sorry!!invalidCode!!");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    if((rightscode[2]+rightscode[6])%5==2){
    if(rightscode[0]*2/rightscode[8]==3&&(rightscode[1]+rightscode[10])%5==8&&(rightscode[22]+rightscode[28]==200)){
    if(!(65<=rightscode[19]&&rightscode[19]<=66)){
    if(rightscode[26]==rightscode[19]+100){
    try {
    dops.writeUTF("8##0##OKay!!We_are_partner!!");//用户所提交的授权码合法.
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }else{
    try {
    dops.writeUTF("8##0##Sorry!!invalidCode!!");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    if(!(81<=rightscode[19]&&rightscode[19]<=90)){
    if(rightscode[26]==rightscode[19]+10){
    try {
    dops.writeUTF("8##0##OKay!!We_are_partner!!");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }else{
    try {
    dops = new DataOutputStream(D_Updata_c_port_Data.mapCustomeronline.get(MyObjSysNumInt).Myso1.getOutputStream());
    dops.writeUTF("8##0##Sorry!!invalidCode!!");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    }else{
    try {
    dops.writeUTF("8##0##Sorry!!invalidCode!!");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  6.   

    Okay!!
        Bairrfhoinn哥,弟我添加上面的"break outer;"语句的目的,就是为了:
        进行“整个验证授权码的类”的“如果用户授权码不在授权有效期内”,“直接提示用户"授权超出有效期"”并且“将用户的本单业务进行"立即收工"的效果”,这样做的好处是为了:
        0.节约处理机开销.
       1.让给回用户的返回值,能够对应打开用户的相应的提示窗口..
       您的代码,如果弟我没有看错的话..
       在经历了第一轮的“是否在授权期内”的判断之后,如果用户的授权码“不在有效期内”,您的代码,还要将用户的授权码进行一遍的“算法核对”,多少会添加S端的服务器的处理机压力.
       并且,C端的相应的提示用户的逻辑,也会多少复杂化... Bairrfhoinn哥,您说的CSDN的缺点,是有的...
       建议CSDN的版主,工作者,能够增加:
        手机Socket提醒,的业务.
       并且,结合“信息群发商”的企业接口,将“非智能手机”的市场,也给兼容进来.
       并且,希望CSDN,我的大学,能够增加“让论坛中的代码,能够被"直接按照格式粘贴进入MyEclipse和Hibernate以及VS”等等的编译环境中... 
        Bairrfhoinn 哥给与我的提示,就让我“排了好一阵的版...
      

  7.   

    Bairrfhoinn 哥,请问:
        弟我上面提出的这几个开发需求,如果用弟我上面的这个类文件来写的话...
       怎样满足...?
        同时在线等待CSDN中的诸位高手的相助.