你拿到的是不是jar包和源碼分開(kāi)的。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、西鄉(xiāng)網(wǎng)站維護(hù)、網(wǎng)站推廣。
這種情況一般是代碼和class不對(duì)應(yīng),導(dǎo)致行號(hào)錯(cuò)誤。
1、JAVA中在登錄界面按住Ctrl鍵,鼠標(biāo)單擊super.say,Eclipse中跳轉(zhuǎn)結(jié)果。
2、按住Ctrl鍵,單擊第3行代碼sayHello,跳轉(zhuǎn)結(jié)果。看到這樣的跳轉(zhuǎn)結(jié)果會(huì)讓很多初學(xué)者摸不著頭腦。希望在今后的Eclipse版本中能夠盡快的修正這個(gè)跳轉(zhuǎn)到eclipse中其他代碼的功能。
說(shuō)說(shuō)servlet里面的方法:
public void ValidateUserPass(String user,String pass){
RequestDispathcher rd =null
//假使你的代碼是從DB中獲取
DBFactory db=DBFactoryImpl.getDBFactoryInstance();//得到數(shù)據(jù)庫(kù)鏈接
flg=db.findUser(user,pass);
// 這里是不存在用戶
if(flg.hasNext()==-1){
// 登錄時(shí)錯(cuò)誤了,一般我們會(huì)給用戶一個(gè)提示
session.setAttirbute("msg","對(duì)不起,用戶名或密碼錯(cuò)誤");
RequestDispathcher rd = req.getRequesDispatcher("login.jsp");
rd.forward(request, reponse);//將請(qǐng)求對(duì)象和響應(yīng)對(duì)象傳遞進(jìn)來(lái)
} // 這里是存在當(dāng)前用戶
else{
//當(dāng)然這里登錄成功時(shí),我們要把當(dāng)前用戶寫(xiě)到session里面保存
session.setAttirbute("userName",user);
//這個(gè)請(qǐng)求轉(zhuǎn)發(fā)語(yǔ)句
request.sendRedirect("index.html");
}
}
// * 上述代碼,你可以參考下我的方法,我也很久沒(méi)做JAVA開(kāi)發(fā)了,我現(xiàn)在從事前端UI開(kāi)發(fā),本來(lái)我想在寫(xiě)一個(gè)用struts 2登錄的程序的,可我現(xiàn)在忘得差不多了,上面我所用到的屬性建議你自己好好的研究一下,往后你將學(xué)到struts2 hibernate,Spring等一系列優(yōu)秀的開(kāi)源框架,說(shuō)白了,這些東西的底層還是這些,只不過(guò)這些框架做了一些封裝隔離。上述代碼建議你重點(diǎn)理解一下:請(qǐng)求轉(zhuǎn)發(fā)和重定向的區(qū)別。
有
5.3.1 使用break 語(yǔ)句
在Java 中,break語(yǔ)句有3種作用。第一,你已經(jīng)看到,在switch語(yǔ)句中,它被用來(lái)終止一個(gè)語(yǔ)句序列。第二,它能被用來(lái)退出一個(gè)循環(huán)。第三,它能作為一種“先進(jìn)”的goto 語(yǔ)句來(lái)使用。下面對(duì)最后 2種用法進(jìn)行解釋。
使用break 退出循環(huán)
可以使用break 語(yǔ)句直接強(qiáng)行退出循環(huán),忽略循環(huán)體中的任何其他語(yǔ)句和循環(huán)的條件測(cè)試。在循環(huán)中遇到break語(yǔ)句時(shí),循環(huán)被終止,程序控制在循環(huán)后面的語(yǔ)句重新開(kāi)始。下面是一個(gè)簡(jiǎn)單的例子:
// Using break to exit a loop.
class BreakLoop {
public static void main(String args[]) {
for(int i=0; i100; i++) {
if(i == 10) break; // terminate loop if i is 10
System.out.println("i: " + i);
}
System.out.println("Loop complete.");
}
}
該程序產(chǎn)生如下的輸出:
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
i: 8
i: 9
Loop complete.
正如你看到的那樣,盡管for 循環(huán)被設(shè)計(jì)為從 0執(zhí)行到99,但是當(dāng)i等于10時(shí),break語(yǔ)句終止了程序。break語(yǔ)句能用于任何 Java 循環(huán)中,包括人們有意設(shè)置的無(wú)限循環(huán)。例如,將上一個(gè)程序用while 循環(huán)改寫(xiě)如下。該程序的輸出和剛才看到的輸出一樣。
// Using break to exit a while loop.
class BreakLoop2 {
public static void main(String args[]) {
int i = 0;
while(i 100) {
if(i == 10) break; // terminate loop if i is 10
System.out.println("i: " + i);
i++;
}
System.out.println("Loop complete.");
}
}
在一系列嵌套循環(huán)中使用break 語(yǔ)句時(shí),它將僅僅終止最里面的循環(huán)。例如:
// Using break with nested loops.
class BreakLoop3 {
public static void main(String args[]) {
for(int i=0; i3; i++) {
System.out.print("Pass " + i + ": ");
for(int j=0; j100; j++) {
if(j == 10) break; // terminate loop if j is 10
System.out.print(j + " ");
}
System.out.println();
}
System.out.println("Loops complete.");
}
}
該程序產(chǎn)生如下的輸出:
Pass 0: 0 1 2 3 4 5 6 7 8 9
Pass 1: 0 1 2 3 4 5 6 7 8 9
Pass 2: 0 1 2 3 4 5 6 7 8 9
Loops complete.
從中可以看出,在內(nèi)部循環(huán)中的break語(yǔ)句僅僅終止了該循環(huán),外部的循環(huán)不受影響。
關(guān)于break ,在這里要記住兩點(diǎn)。首先,一個(gè)循環(huán)中可以有一個(gè)以上的break 語(yǔ)句。但要小心,太多的break 語(yǔ)句會(huì)破壞你的代碼結(jié)構(gòu)。其次,switch語(yǔ)句中的break僅僅影響該switch 語(yǔ)句,而不會(huì)影響其中的任何循環(huán)。
注意:break 不是被設(shè)計(jì)來(lái)提供一種正常的循環(huán)終止的方法。循環(huán)的條件語(yǔ)句是專(zhuān)門(mén)用來(lái)終止循環(huán)的。只有在某類(lèi)特殊的情況下,才用break 語(yǔ)句來(lái)取消一個(gè)循環(huán)。
把break 當(dāng)作goto 的一種形式來(lái)用
break語(yǔ)句除了在switch語(yǔ)句和循環(huán)中使用之外,它還能作為goto 語(yǔ)句的一種“文明”形式來(lái)使用。Java 中沒(méi)有 goto 語(yǔ)句,因?yàn)間oto 語(yǔ)句提供了一種改變程序運(yùn)行流程的非結(jié)構(gòu)化方式。這通常使程序難以理解和難于維護(hù)。它也阻止了某些編譯器的優(yōu)化。但是,有些地方goto 語(yǔ)句對(duì)于構(gòu)造流程控制是有用的而且是合法的。例如,從嵌套很深的循環(huán)中退出時(shí), goto 語(yǔ)句就很有幫助。因此,Java 定義了break 語(yǔ)句的一種擴(kuò)展形式來(lái)處理這種情況。通過(guò)使用這種形式的break,你可以終止一個(gè)或者幾個(gè)代碼塊。這些代碼塊不必是一個(gè)循環(huán)或一個(gè)switch語(yǔ)句的一部分,它們可以是任何的塊。而且,由于這種形式的break 語(yǔ)句帶有標(biāo)簽,你可以明確指定執(zhí)行從何處重新開(kāi)始。你將看到,break帶給你的是goto 的益處,并舍棄了goto 語(yǔ)句帶來(lái)的麻煩。
標(biāo)簽break 語(yǔ)句的通用格式如下所示:
break label;
這里,標(biāo)簽label 是標(biāo)識(shí)代碼塊的標(biāo)簽。當(dāng)這種形式的break執(zhí)行時(shí),控制被傳遞出指定的代碼塊。被加標(biāo)簽的代碼塊必須包圍break 語(yǔ)句,但是它不需要是直接的包圍break的塊。這意味著你可以使用一個(gè)加標(biāo)簽的break 語(yǔ)句退出一系列的嵌套塊。但是你不能使用break 語(yǔ)句將控制傳遞到不包含break 語(yǔ)句的代碼塊。
要指定一個(gè)代碼塊,在其開(kāi)頭加一個(gè)標(biāo)簽即可。標(biāo)簽(label )可以是任何合法有效的Java 標(biāo)識(shí)符后跟一個(gè)冒號(hào)。一旦你給一個(gè)塊加上標(biāo)簽后,你就可以使用這個(gè)標(biāo)簽作為break 語(yǔ)句的對(duì)象了。這樣做會(huì)使執(zhí)行在加標(biāo)簽的塊的結(jié)尾重新開(kāi)始。例如,下面的程序示例了 3 個(gè)嵌套塊,每一個(gè)都有它自己的標(biāo)簽。break語(yǔ)句使執(zhí)行向前跳,調(diào)過(guò)了定義為標(biāo)簽second 的代碼塊結(jié)尾,跳過(guò)了2個(gè)println ( ) 語(yǔ)句。
// Using break as a civilized form of goto.
class Break {
public static void main(String args[]) {
boolean t = true;
first: {
second: {
third: {System.out.println("Before the break.");if(t) break second; // break out of second blockSystem.out.println("This won't execute");
}
System.out.println("This won't execute");}System.out.println("This is after second block.");
}
}
}
運(yùn)行該程序,產(chǎn)生如下的輸出:
Before the break.
This is after second block.
標(biāo)簽break 語(yǔ)句的一個(gè)最普遍的用法是退出循環(huán)嵌套。例如,下面的程序中,外層的循環(huán)只執(zhí)行了一次:
// Using break to exit from nested loops
class BreakLoop4 {
public static void main(String args[]) {
outer: for(int i=0; i3; i++) {
System.out.print("Pass " + i + ": ");
for(int j=0; j100; j++) {
if(j == 10) break outer; // exit both loops
System.out.print(j + " ");
}
System.out.println("This will not print");
}
System.out.println("Loops complete.");
}
}
該程序產(chǎn)生如下的輸出:
Pass 0: 0 1 2 3 4 5 6 7 8 9 Loops complete.
你可以看到,當(dāng)內(nèi)部循環(huán)退到外部循環(huán)時(shí),兩個(gè)循環(huán)都被終止了。記住如果一個(gè)標(biāo)簽不在包圍break的塊中定義,你就不能break 到該標(biāo)簽。例如,下面的程序就是非法的,且不會(huì)被編譯:
// This program contains an error.
class BreakErr {
public static void main(String args[]) {
one: for(int i=0; i3; i++) {
System.out.print("Pass " + i + ": ");
}
for(int j=0; j100; j++) {
if(j == 10) break one; // WRONG
System.out.print(j + " ");
}
}
}
因?yàn)闃?biāo)簽為one的循環(huán)沒(méi)有包圍break 語(yǔ)句,所以不能將控制傳遞到該塊。
5.3.2 使用continue 語(yǔ)句
有時(shí)強(qiáng)迫一個(gè)循環(huán)提早反復(fù)是有用的。也就是,你可能想要繼續(xù)運(yùn)行循環(huán),但是要忽略這次重復(fù)剩余的循環(huán)體的語(yǔ)句。實(shí)際上,goto 只不過(guò)是跳過(guò)循環(huán)體,到達(dá)循環(huán)的尾部。continue 語(yǔ)句是break語(yǔ)句的補(bǔ)充。在while 和do while 循環(huán)中,continue 語(yǔ)句使控制直接轉(zhuǎn)移給控制循環(huán)的條件表達(dá)式,然后繼續(xù)循環(huán)過(guò)程。在for 循環(huán)中,循環(huán)的反復(fù)表達(dá)式被求值,然后執(zhí)行條件表達(dá)式,循環(huán)繼續(xù)執(zhí)行。對(duì)于這3種循環(huán),任何中間的代碼將被旁路。
下例使用continue 語(yǔ)句,使每行打印2個(gè)數(shù)字:
// Demonstrate continue.
class Continue {
public static void main(String args[]) {
for(int i=0; i10; i++) {
System.out.print(i + " ");
if (i%2 == 0) continue;
System.out.println("");
}
}
}
該程序使用%(模)運(yùn)算符來(lái)檢驗(yàn)變量i是否為偶數(shù),如果是,循環(huán)繼續(xù)執(zhí)行而不輸出一個(gè)新行。該程序的結(jié)果如下:
0 1
2 3
4 5
6 7
8 9
對(duì)于break語(yǔ)句,continue 可以指定一個(gè)標(biāo)簽來(lái)說(shuō)明繼續(xù)哪個(gè)包圍的循環(huán)。下面的例子運(yùn)用continue 語(yǔ)句來(lái)打印0到9的三角形乘法表:
// Using continue with a label.
class ContinueLabel {
public static void main(String args[]) {
outer: for (int i=0; i10; i++) {
for(int j=0; j10; j++) {
if(j i) {
System.out.println();
continue outer; }
System.out.print(" " + (i * j)); }}
System.out.println();
}
}
在本例中的continue 語(yǔ)句終止了計(jì)數(shù)j的循環(huán)而繼續(xù)計(jì)數(shù)i的下一次循環(huán)反復(fù)。該程序的輸出如下:
0 1
0 2 4
0 3 6 9
0 4 8 12 16
0 5 10 15 20 25
0 6 12 18 24 30 36
0 7 14 21 28 35 42 49
0 8 16 24 32 40 48 56 64
0 9 18 27 36 45 54 63 72 81
很好的利用continue 語(yǔ)句的情況很少,一個(gè)原因是Java 提供了一系列豐富的循環(huán)語(yǔ)句,可以適用于絕大多數(shù)應(yīng)用程序。但是,對(duì)于那些需要提早反復(fù)的特殊情形,continue 語(yǔ)句提供了一個(gè)結(jié)構(gòu)化的方法來(lái)實(shí)現(xiàn)。
5.3.3 使用return語(yǔ)句
最后一個(gè)控制語(yǔ)句是return。return語(yǔ)句用來(lái)明確地從一個(gè)方法返回。也就是,return 語(yǔ)句使程序控制返回到調(diào)用它的方法。因此,將它分類(lèi)為跳轉(zhuǎn)語(yǔ)句。盡管對(duì)return 語(yǔ)句的詳細(xì)討論在第 7 章開(kāi)始,這里對(duì)其作簡(jiǎn)要地介紹。
在一個(gè)方法的任何時(shí)間,return 語(yǔ)句可被用來(lái)使正在執(zhí)行的分支程序返回到調(diào)用它的方法。下面的例子說(shuō)明這一點(diǎn)。下例中,由于是Java 運(yùn)行系統(tǒng)調(diào)用main() ,因此,return語(yǔ)句使程序執(zhí)行返回到Java 運(yùn)行系統(tǒng)。
// Demonstrate return.
class Return {
public static void main(String args[]) {
boolean t = true;
System.out.println("Before the return.");
if(t) return; // return to caller
System.out.println("This won't execute.");
}
}
該程序的結(jié)果如下:
Before the return.
正如你看到的一樣,最后的println( ) 語(yǔ)句沒(méi)有被執(zhí)行。一旦return語(yǔ)句被執(zhí)行,程序控制傳遞到它的調(diào)用者。
最后一點(diǎn):在上面的程序中,if(t)語(yǔ)句是必要的。沒(méi)有它,Java 編譯器將標(biāo)記“執(zhí)行不到的代碼”(unreachable code )錯(cuò)誤,因?yàn)榫幾g器知道最后的println ()語(yǔ)句將永遠(yuǎn)不會(huì)被執(zhí)行。為阻止這個(gè)錯(cuò)誤,為了這個(gè)例子能夠執(zhí)行,在這里使用if語(yǔ)句來(lái)“蒙騙”編譯器。
您好,break label不是任意使用的,它只能直接用在代碼塊(for/while/switch/if/大括號(hào))上,注意是“直接”,下面舉例說(shuō)明:
1.代碼一(直接用在for上,這是最普遍的用法,正確):
int?i?=?1;
label:
for?(int?j?=?1;?j??5;?j++)?{
if?(j?%?2?==?0)
break?label;
System.out.println(j?+?"-----"?+?i);
}
2.代碼二(注意這里加了大括號(hào),所以構(gòu)成了一個(gè)代碼塊,也正確)
label:
{
int?i?=?1;
for?(int?j?=?1;?j??5;?j++)?{
if?(j?%?2?==?0)
break?label;
System.out.println(j?+?"-----"?+?i);
}
}
3.代碼三(錯(cuò)誤,label沒(méi)有直接用在代碼塊上,對(duì)比代碼二,缺少了大括號(hào)包圍)
label:
int?i?=?1;
for?(int?j?=?1;?j??5;?j++)?{
if?(j?%?2?==?0)
break?label;
System.out.println(j?+?"-----"?+?i);
}
4.代碼四(錯(cuò)誤,break label;沒(méi)有包含在label標(biāo)記的代碼塊中,代碼三的錯(cuò)誤也能用這個(gè)解釋?zhuān)?/p>
label:?{
int?i?=?1;
}
for?(int?j?=?1;?j??5;?j++)?{
if?(j?%?2?==?0)
break?label;
System.out.println(j?+?"-----"?+?i);
}
綜上所述,相比起C語(yǔ)言中g(shù)oto的任意跳轉(zhuǎn),這個(gè)break label的使用并不是那么自由,需要多留意。
另外,不建議使用過(guò)多的這種語(yǔ)句,會(huì)破壞程序結(jié)構(gòu)的完整性。
-----您的采納是我們的動(dòng)力-----
String seat1= null;
Scanner idtype = null;
System.out.println("請(qǐng)輸入艙位代碼,E,A代表頭等艙,C,D代表公務(wù)艙,Y,T,K代表第一類(lèi)經(jīng)濟(jì)艙,M,G代表第二類(lèi)經(jīng)濟(jì)艙,如果輸入其他,代表其他艙位。");
idtype=new Scanner(System.in);
seat1=idtype.next();
while(seat1.length()!=1){
System.out.println("輸入錯(cuò)誤,請(qǐng)重新輸入.");
idtype=new Scanner(System.in);
seat1=idtype.next();
}
seat=seat1.charAt(0);//輸入字母的操作
/*break 用于退出循環(huán),你為什么用在IF里?要想返回J,你要用GOTO語(yǔ)句,不過(guò)用GOTO會(huì)破壞程序流向,完全可以用FOR,IF,來(lái)代替.這個(gè)程序最好用CASE來(lái)做.不然你輸入空格程序會(huì)出錯(cuò).你自己解決吧.*/
新聞名稱(chēng):java跳到某一行代碼 c語(yǔ)言跳到某一行
本文網(wǎng)址:http://chinadenli.net/article16/hiepgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、建站公司、做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)