当前位置:编程学习 > JAVA >>

求高手点拨一个“Java代码的调试问题”.

高手,这是我写的一个“验证授权码”的类文件的源代码:
    
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排错 --------------------编程问答-------------------- GetTheSysData 和 D_Updata_c_port_Data 都是什么对象啊,是你自己定义的嘛,在我的开发环境下直接提示类找不到...怎么帮你查看问题? --------------------编程问答-------------------- 你这不是乱用标号吗、、 --------------------编程问答-------------------- 上面是两个弟我自己写的类文件,其中的GetTheSysData类的辅助计算,就是起到一个“拿出系统的目前以:
    yyyy-mm-dd
    的格式来写的时间,比如:20130928,这样的格式的时间.
    并且,这里的D_Updata_c_port_Data类的参与计算,就是为了拿出D_Updata_c_port_Data类中所定义的一个“全局作用域的HashMap”,来让整个本类进行“在第92行拿出HashMap中所存储的值:用户的Socket水管”“进行SocketObj.getOutputStream()”语句的调用书写..
    希望希元首和Bairrfhoinn两位哥哥,能够从弟我的这个代码的结构来进行判断:
    上面的两个类文件,在本类中起到的作用,弟我已经说到了... --------------------编程问答--------------------
引用 3 楼 u012273823 的回复:
上面是两个弟我自己写的类文件,其中的GetTheSysData类的辅助计算,就是起到一个“拿出系统的目前以:
    yyyy-mm-dd
    的格式来写的时间,比如:20130928,这样的格式的时间.
    并且,这里的D_Updata_c_port_Data类的参与计算,就是为了拿出D_Updata_c_port_Data类中所定义的一个“全局作用域的HashMap”,来让整个本类进行“在第92行拿出HashMap中所存储的值:用户的Socket水管”“进行SocketObj.getOutputStream()”语句的调用书写..
    希望希元首和Bairrfhoinn两位哥哥,能够从弟我的这个代码的结构来进行判断:
    上面的两个类文件,在本类中起到的作用,弟我已经说到了...
编辑器的提示已经非常明显了,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();
}
}
--------------------编程问答-------------------- Bairrfhoinn哥,您能够提示得“再详细些”吗...?
    我希望能够得到:
    面向弟我的编译器的环境,所进行的“行号对应”的提示...
   谢谢Bairrfhoinn 哥!! --------------------编程问答-------------------- 这样总可以了吧。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();
}
}
}
}
--------------------编程问答-------------------- Okay!!
    Bairrfhoinn哥,弟我添加上面的"break outer;"语句的目的,就是为了:
    进行“整个验证授权码的类”的“如果用户授权码不在授权有效期内”,“直接提示用户"授权超出有效期"”并且“将用户的本单业务进行"立即收工"的效果”,这样做的好处是为了:
    0.节约处理机开销.
   1.让给回用户的返回值,能够对应打开用户的相应的提示窗口..
   您的代码,如果弟我没有看错的话..
   在经历了第一轮的“是否在授权期内”的判断之后,如果用户的授权码“不在有效期内”,您的代码,还要将用户的授权码进行一遍的“算法核对”,多少会添加S端的服务器的处理机压力.
   并且,C端的相应的提示用户的逻辑,也会多少复杂化...

 Bairrfhoinn哥,您说的CSDN的缺点,是有的...
   建议CSDN的版主,工作者,能够增加:
    手机Socket提醒,的业务.
   并且,结合“信息群发商”的企业接口,将“非智能手机”的市场,也给兼容进来.
   并且,希望CSDN,我的大学,能够增加“让论坛中的代码,能够被"直接按照格式粘贴进入MyEclipse和Hibernate以及VS”等等的编译环境中... 
    Bairrfhoinn 哥给与我的提示,就让我“排了好一阵的版... --------------------编程问答-------------------- Bairrfhoinn 哥,请问:
    弟我上面提出的这几个开发需求,如果用弟我上面的这个类文件来写的话...
   怎样满足...?
    同时在线等待CSDN中的诸位高手的相助. --------------------编程问答-------------------- 代码不完整,无法调试
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,