next()与nextLine()的区别:


next()既能以回车键结束输入,也能以空格键结束输入;也就是说next()无法接收空格;nextLine()只能以回车键结束,也就是可以接收空格。next()必须接收到有效字符才能结束输入,也就是说先输入空格再输入有效字符再结束的话,是可以接收到有效字符的。next()与nextLine()同时使用时,如果next()是以回车键结束的,那么如果下一条语句是nextLine()的话,会认为已经接收到回车键结束了从而接收不到有效字符。所以nextLine()千万不能跟在next()后面使用。反过来就可以。


执行结构


循环结构:重复执行某一循环体,直到不满足给定条件为止。 分支结构:根据给定的条件判断执行哪个分支。 顺序结构:根据语句出现的顺序执行语句。 Tips:任何算法都可以以循环结构,分支结构,顺序结构这三种基本结构组合而成。


switch语句


switch语句case子句中的取值必须是常量。


break与continue的区别


break语句用于终止本轮所有次循环,即不执行本次循环中break后面的语句,直接跳出循环。continue用于终止本轮本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。如果要跳出多层循环,给要跳出的循环命名,之后在break语句后面跟上该命名就可以跳出该循环。


/** 
* main:(程序执行的入口).
* @author 叶子健
* @param args 命令行参数
* @since JDK 1.8
*/
public static void main(String[] args) {
first: for (int i = 0; i < 10; i++) {
System.out.print("i="+i+"\t");
for (int j = 0; j < 5; j++) {
System.out.println("j="+j);
break first;
}
}
}

判断用户输入类型


用Scanner中的方法hasNextXXX()判断。


作业

public static void main(String[] args){
   //某市出租车,起步价(2公里以内)为8元,超过2公里的按照每公里4.5元计算。要求根据路程计算费用。
   try {
       System.out.println(calculateTaxiFare(-3));
  } catch (Exception e) {
       e.printStackTrace();
  }
}
public static double calculateTaxiFare(int n) throws Exception {
   double taxiFare = 0;
   if (n <= 0)
       throw new Exception("请传递大于0的参数");
   else if (n > 0 && n <= 2)
       taxiFare = 8;
   else
       taxiFare = 8 + 4.5*(n-2);
   return taxiFare;
}
public static void main(String[] args){
   //输入年份,判断输入的年份是否是闰年。(闰年的条件是能被4整除,但不能被100整除;或能被400整除。)
   try {
       Scanner input = new Scanner(System.in);
       System.out.print("请输入年份:");
       int year = input.nextInt();
       isLeapYear(year);
  } catch (Exception e) {
       e.printStackTrace();
  }
}
public static void isLeapYear(int year) throws Exception {
   if(year < 0)
       throw new Exception("请输入大于0的年份。");
   else if(year%4 == 0 && year%100 !=0 || year%400 ==0)
       System.out.println(year+"年是闰年。");
   else
       System.out.println(year+"年不是闰年。");
}
public static void main(String[] args){
   //要求输入月份,判断该月所处的季节并输出季节(假设:12、1、2月为冬季,依次类推)。
   try {
       Scanner input = new Scanner(System.in);
       System.out.print("请输入月份:");
       int year = input.nextInt();
       getSeasonByMonth(year);
  } catch (Exception e) {
       e.printStackTrace();
  }
}
public static void getSeasonByMonth(int month) throws Exception {
   if(month<1 || month>12)
       throw new Exception("请输入1到12的月份。");
   //将输入的月份转换成模12域中的数,这样0,1,2就是冬季;3,4,5就是春季以此类推。
   int season = month%12;
   if(season<3)
       System.out.println(month+"月是冬季。");
   else if(season>=3 && season<6)
       System.out.println(month+"月是春季。");
   else if(season>=6 && season<9)
       System.out.println(month+"月是夏季。");
   else
       System.out.println(month+"月是秋季。");
}
public static void main(String[] args){
   /*根据《国家电网销售电价表》,居民生活用电按3个梯度收费:月用电量150千瓦时及以下部分,每千瓦时0.43元,151—400千瓦时部分为0.45元,
   401千瓦时以上部分为0.52元,请编写程序,当输入用户的用电量时,计算出所需付的费用。*/
   try {
       Scanner input = new Scanner(System.in);
       System.out.print("请输入用电量:");
       int electricity = input.nextInt();
       calculatorFeesByElectricity(electricity);
  } catch (Exception e) {
       e.printStackTrace();
  }
}
public static void calculatorFeesByElectricity(int electricity) throws Exception {
   if(electricity<0)
       throw new Exception("请输入大于0的用电量。");
   double fees;
   if(electricity<=150) {
       fees = 0.43*electricity;
       System.out.println("用电量为"+electricity+"度,处于第一梯度。需要付的电费是"+fees+"元。");
  }
   else if(electricity>150 && electricity<=400) {
       fees = 0.43*150 + 0.45*(electricity-150);
       System.out.println("用电量为"+electricity+"度,处于第二梯度。需要付的电费是"+fees+"元。");
  }
   else if(electricity>400) {
       fees = 0.43*150 + 0.45*250 + 0.52*(electricity-400);
       System.out.println("用电量为"+electricity+"度,处于第三梯度。需要付的电费是"+fees+"元。");
  }
}
public static void main(String[] args){
   /*商场根据会员积分打折:
       * 2000分以内打9折,
       * 4000分以内打8折,
       * 8000分以内打7.5折,
       * 8000分以上打7折,
       * 使用if-else-if结构,实现手动输入购物金额和积分,计算出应缴金额。
       */
   try {
       Scanner input = new Scanner(System.in);
       System.out.print("请输入购物金额:");
       double money = input.nextInt();
       System.out.print("请输入积分:");
       int integral = input.nextInt();
       calculatorMoneyByIntegral(money, integral);
  } catch (Exception e) {
       e.printStackTrace();
  }
}
public static void calculatorMoneyByIntegral(double money, int integral) throws Exception {
   if(money<0 || integral<0)
       throw new Exception("请输入大于0的购物金额与积分。");
   double finalMoney;
   if(integral<=2000) {
       finalMoney = 0.9*money;
       System.out.println("您的积分为"+integral+",为您打九折。最终需要付的金额是"+finalMoney+"元。");
  }
   else if(integral>2000 && integral<=4000) {
       finalMoney = 0.8*money;
       System.out.println("您的积分为"+integral+",为您打八折。最终需要付的金额是"+finalMoney+"元。");
  }
   else if(integral>4000 && integral<=8000) {
       finalMoney = 0.75*money;
       System.out.println("您的积分为"+integral+",为您打七五折。最终需要付的金额是"+finalMoney+"元。");
  }
   else if(integral>8000){
       finalMoney = 0.7*money;
       System.out.println("您的积分为"+integral+",为您打七折。最终需要付的金额是"+finalMoney+"元。");
  }
}
public static void main(String[] args){
   /*一年中有12个月,而每个月的天数是不一样的。其中大月31天,
       * 分别为1,3,5,7,8,10,12月,小月30天,分别为4,6,9,11月。
       * 还有二月比较特殊,平年的二月只有28天,而闰年的二月有29天,
       * 由用户在控制台输入年份和月份,程序计算该年该月的天数。
       */
   try {
       Scanner input = new Scanner(System.in);
       System.out.print("请输入年份:");
       int year = input.nextInt();
       System.out.print("请输入月份:");
       int month = input.nextInt();
       getDaysByYearAndMonth(year, month);
  } catch (Exception e) {
       e.printStackTrace();
  }
}
public static void getDaysByYearAndMonth(int year, int month) throws Exception {
   if(year<0 || month<0)
       throw new Exception("请输入大于0的年份与月份。");
   HashMap<Integer, Integer> monthToDays = new HashMap<>() ;
  {
       monthToDays.put(1, 31);
       monthToDays.put(3, 31);
       monthToDays.put(4, 30);
       monthToDays.put(5, 31);
       monthToDays.put(6, 30);
       monthToDays.put(7, 31);
       monthToDays.put(8, 31);
       monthToDays.put(9, 30);
       monthToDays.put(10, 31);
       monthToDays.put(11, 30);
       monthToDays.put(12, 31);
  }
   if(isLeapYear(year)) {
       monthToDays.put(2,29);
       System.out.print(year+"年是闰年,");
  }
   else {
       monthToDays.put(2,28);
       System.out.print(year+"年不是闰年,");
  }
   System.out.println(year+"年的"+month+"月共有"+monthToDays.get(month)+"天。");
}
public static boolean isLeapYear(int year) throws Exception {
   if(year < 0)
       throw new Exception("请输入大于0的年份。");
   else if(year%4 == 0 && year%100 !=0 || year%400 ==0)