一、通過args數(shù)組獲取數(shù)據(jù)
通過main方法的args數(shù)組可以從控制臺(tái)獲取一組字符串?dāng)?shù)據(jù)。
【案例】給main方法分args數(shù)組輸入兩個(gè)整數(shù),對(duì)這兩個(gè)整數(shù)進(jìn)行四則運(yùn)算,結(jié)果如下所示:

代碼
public class Test15 {
public static void main(String[] args) {
int a=Integer.parseInt(args[0]);
int b=Integer.parseInt(args[1]);
System.out.println(a+"+"+b+"="+(a+b));
System.out.println(a+"-"+b+"="+(a-b));
System.out.println(a+"*"+b+"="+a*b);
System.out.println(a+"/"+b+"="+a/b);
}
}
結(jié)果:
10+3=13
10-3=7
10*3=30
10/3=3
注意:運(yùn)行時(shí),按照下圖所示操作
步驟一:

步驟二:

步驟三:

二、通過Scanner從控制臺(tái)獲取數(shù)據(jù)
1、概述
- Scanner類用于掃描從控制臺(tái)輸入的數(shù)據(jù),可以接收字符串和基本數(shù)據(jù)類型的數(shù)據(jù)。
- Scanner類位于java.util.Scanner包中。
2、Scanner類的常用方法
<1> String next();
作用:接收控制臺(tái)輸入的一個(gè)字符串。next是以空格或回車作為一次數(shù)據(jù)輸入的結(jié)束,因此,next方法不能將空格作為字符串接收。
<2>String nextLine();
作用:接收控制臺(tái)輸入的一個(gè)字符串。nextLine是以回車作為數(shù)據(jù)輸入的結(jié)束,因此,nextLine可以接收空格作為字符串的一部分。
<3>int nextInt();
作用:接收控制臺(tái)輸入的一個(gè)int類型的數(shù)據(jù)。
<4>double nextDouble();
作用:接收控制臺(tái)輸入的一個(gè)double類型的數(shù)據(jù)。
<5>boolean nextBoolean();
作用:接收控制臺(tái)輸入的一個(gè)boolean類型的數(shù)據(jù)。
<6>輸入char類型的數(shù)據(jù)
Scanner類沒有提供直接輸入char類型的方法,可以通過charAt()方法從next()或nextLine()獲取輸入的字符。
char String.charAt(int index);
作用:從字符串中獲取指定下標(biāo)的字符,下標(biāo)從0開始。
例如:“abc”.charAt(0)的結(jié)果是a。
例如:“abc”.charAt(1)的結(jié)果是b。
例如:next().charAt(0);從控制臺(tái)輸入的字符串中獲取第一個(gè)字符。
3、使用步驟
步驟1、創(chuàng)建Scanner類的一個(gè)對(duì)象。
示例:
Scanner scanner=new Scanner(System.in);
System.in這個(gè)參數(shù)用來指定scanner接收控制臺(tái)輸入的數(shù)據(jù)。
步驟2、通過scanner調(diào)用next等方法,接收控制臺(tái)輸入的數(shù)據(jù)。
示例:
System.out.println("姓名:");
String name=scanner.next();
4、案例
【示例】從控制臺(tái)輸入多種類型的數(shù)據(jù)
通過控制臺(tái)輸入一個(gè)人的姓名、性別、年齡、身高和性格,然后讓該人和大家做自我介紹。

代碼
public class Test16 {
public static void main(String[] args) {
//步驟1、創(chuàng)建Scanner對(duì)象
Scanner scanner=new Scanner(System.in);
//步驟2、向控制臺(tái)輸出文本
System.out.println("姓名:");
//步驟3、接收輸入的姓名字符串
String name=scanner.next();
System.out.println("性別:");
char sex=scanner.next().charAt(0);
System.out.println("年齡:");
int age=scanner.nextInt();
System.out.println("身高:");
double height=scanner.nextDouble();
System.out.println("性格:");
String type=scanner.next();
System.out.println("嗨,大家好,俺叫"+name+",今年"+age+"歲,身高"+height+"米,俺是一個(gè)"+type+sex+"士");
}
}
結(jié)果:
姓名:
張飛
性別:
男
年齡:
35
身高:
1.99
性格:
豪放的
嗨,大家好,俺叫張飛,今年35歲,身高1.99米,俺是一個(gè)豪放的男士
三、變量的自加、自減、自乘、自除運(yùn)算
- 自增是一個(gè)變量在原有值基礎(chǔ)上再增加指定值。
- 自減是一個(gè)變量在原有值基礎(chǔ)上再減去指定值。
- 自乘是一個(gè)變量在原有值基礎(chǔ)上再乘以指定值。
- 自除是一個(gè)變量在原有值基礎(chǔ)上再除以指定值。
1、自增
1>整形變量的自增;
int i=0;
i=i+1;
2>字符串類型變量的自增
String space="";
space=space=" "; //雙引號(hào)中間有一個(gè)空格
3>自增運(yùn)算的簡(jiǎn)寫形式:
<1>先加1:++i
示例:
int i=1;
System.out.println(++i);輸出的結(jié)果是2,變量i的值是2
String space="";
space+=" ";
<2>后加1:i++
示例:
int i=1;
System.out.println(i++);輸出的結(jié)果是1,變量i的值是2
4>自增n
自增n:i+=n
等效于:i=i+n
示例:
i+=5; // i=i+5;
2、自減
1>先減1:--i
示例:
int i=1;
System.out.println(--i);輸出的結(jié)果是0,變量i的值是0
2>后減1:i--
示例:
int i=1;
System.out.println(i--);輸出的結(jié)果是1,變量i的值是0
3>自減n
自減n:i-=n
等效于:i=i-n
示例:
i+-=5; // i=i-5;
3、自乘n
自乘n:i*=n
等效于:i=i*n
示例:
double d=2;
d*=5; //d=2*5;
4、自除n
自除n:i/=n
等效于:i=i/n
示例:
double d=15;
d/=5; //d=15/5;
四、交換兩個(gè)變量的值
兩個(gè)變量值互換是基本的算法,在排序等算法中應(yīng)用。
已知:int a=100; int b=10; 交換兩個(gè)變量值,使得a=10,b=100;
解法一:
錯(cuò)誤代碼:
a=b;
b=a;
正確代碼:
int c=a;
a=b;
b=c;
解法二:
不借助第三個(gè)變量,僅在兩個(gè)變量之間交換值。
步驟1、a=a+b;
結(jié)果:a=a+b,b=b
步驟2、b=a-b;
結(jié)果:a=a+b,b=a
步驟3、a=a-b;
結(jié)果:a=b,b=a
五、Java的錯(cuò)誤類型
程序的錯(cuò)誤分為編譯期語法錯(cuò)誤、運(yùn)行期異常錯(cuò)誤和運(yùn)行期邏輯錯(cuò)誤。
1、編譯期語法錯(cuò)誤
可以借助Eclipse的幫助方便的定位錯(cuò)誤,并進(jìn)行修改。
2、運(yùn)行期異常
系統(tǒng)會(huì)提示錯(cuò)誤的類型和出錯(cuò)的位置。

3、邏輯錯(cuò)誤
邏輯錯(cuò)誤是指程序可以編譯運(yùn)行,但程序執(zhí)行的結(jié)果卻不是預(yù)期的效果。

六、Debug調(diào)試
1、概述
- 調(diào)試是查找、解決軟件中邏輯錯(cuò)誤代碼(稱為bug:軟件臭蟲)的重要手段,是軟件開發(fā)中必不可少的環(huán)節(jié)。
- 調(diào)試也是學(xué)習(xí)、研究其他人編寫的代碼的一個(gè)很好地手段。
- Eclipse提供了強(qiáng)大的代碼調(diào)試功能-Debug,通過Debug視圖能快速定位代碼中的邏輯錯(cuò)誤,提高軟件開發(fā)效率。
2、Debug視圖
步驟見下圖



3、斷點(diǎn)
- 斷點(diǎn)是在源代碼的可執(zhí)行部分的指定行設(shè)置一個(gè)標(biāo)志,在調(diào)試運(yùn)行方式下,程序運(yùn)行到該斷點(diǎn)標(biāo)志處會(huì)自動(dòng)暫停,等待下一步操作。
- 通過設(shè)置斷點(diǎn)可以快速執(zhí)行斷點(diǎn)之前的代碼,然后在斷點(diǎn)處暫停,這時(shí)可以換單個(gè)命令運(yùn)行的方式來運(yùn)行程序,查找程序中德邏輯錯(cuò)誤。
- 斷點(diǎn)設(shè)置的位置應(yīng)該是程序員懷疑錯(cuò)誤代碼的附近位置,即對(duì)出錯(cuò)位置的定性分析,是一個(gè)大概的位置。
