Java Fundamental day03

知识点

一、运算符

1.算术运算符:+、-、*、/、%、++、--;

2.关系运算符:>=、<=、<、>、==、!=(<>)和boolean;

3.逻辑运算符:&&、||、!boolean(&和|也能用,但不断路,即逻辑式中已经判断出结果后仍然继续运行后面的逻辑);

4.赋值运算符:=、+=、-=、*=、/=、%=;

5.字符串连接运算符:""+""

6.三目运算符:boolean表达式?表达式一:表达式二;若boolean值为true则取表达式一,否则表达式二。

二、分支结构

1.if(逻辑表达式){}

2.if-else

3.if-else if

4.switch(整型表达式){//优点:效率高、结构清晰;缺点:整数(byte,short,int,char)、与case相等关系。

         case1:

         .....break;

         case n:...

         default:...} 



练习

//1.个人所得税是国家对本国公民、居住在本国境内的个人的所得和境外个人来源于本国的所得征收的一种所得税。目前,北京地区的个人所得税的计算公式为:应纳税额=(工资薪金所得-扣除数)×适用税率-速算扣除数。其中,扣除数为3500元,适用税率以及速算扣除数如下表所示。

package day03;
import java.util.Scanner;
public class HomeWork {


public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
       double tax,pay,taxrate,quickdeduction;//tax是实缴的税,pay是税前工资,taxrate是税率,
        int deduction=3500;//固定的扣除基数
        tax=0;
        taxrate=0.00;
        quickdeduction=0;
        System.out.println("请输入您的税前工资:");
        pay=scan.nextDouble();       
        if(pay-3500<0){              

                 }else if(pay-3500<=1500){

        taxrate=0.03;
        quickdeduction=0;                          
        }else if(pay-3500<=4500){
        taxrate=0.10;
        quickdeduction=105;
        }else if(pay-3500<=9000){
        taxrate=0.20;
        quickdeduction=555;
        }else if(pay-3500<=35000){
        taxrate=0.25;
        quickdeduction=1005;   
        }else if(pay-3500<=55000){
        taxrate=0.30;
        quickdeduction=2755;  
        }else if(pay-3500<=80000){
          taxrate=0.35;
        quickdeduction=5505;
        }else {
            taxrate=0.45;
        quickdeduction=13505;     
        }
   System.out.println("您需要纳税的金额为tax="+((pay-3500)*taxrate-quickdeduction)); 
     

//2.输入年份和月份,输出该月的天数(使用switch-case)

package day03;
import java.util.Scanner;
public class HomeWork {

public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
        System.out.println("请依次输入年份和月份,以空格隔开:");
        int Year=scan.nextInt();
        int Month=scan.nextInt();
        if(Month<0||Month>12){System.out.println("输入非法,不存在的月");}
      /**闰年各月天数: 1月31天,2月29天,3月31天,4月30天,5月31天,6月30天,7月31天,8月31天,9月30天,10月31天,11月30天,12月31天。 闰年月份中和平年不同的是闰年2月有29天,平年2月只有28天。
   4,6,9,11为小月,其余为大月。*/        
        else{ switch (Month){
        case 2:
        if((Year%4==0&&Year%100!=0)||Year%400==0){
        System.out.println("这月有29天");
}else{
           System.out.println("这月有29天");
        }
        break;
        case 4:
        System.out.println("这月有30天");
        break;
        case 6:
        System.out.println("这月有30天");
        break;
        case 9:
        System.out.println("这月有30天");
                 break;
        case 11:
        System.out.println("这月有30天");
           break;
        default :
        System.out.println("这月有31天");        
        }
        }


//3.判断年龄段、是否闰年等,当条件区间只有1到3个时可以用boolean三目运算式,直接到位,充分利用好boolean只能存储true/false的特性。否则就用if等分支结构。

      可可自行练习此类型题。


//4.使用程序为用户所录入的 3 个数值进行升序排列,并将排序后的结果输出到控制台。

//方法一,替换法。   

 

System.out.println("请依次输入三个整数:c,d,e(以空格隔开)");        
        int c = scan.nextInt();
        int d = scan.nextInt();
        int e = scan.nextInt();               
        System.out.println("您输入的是:");
        System.out.println("c=" + c + ", d=" + d + ", e=" + e);
        int temp = 0;
        if (c > d) {
            temp = c;
            c = d;
            d = temp;
        }
        if (c > e) {

            temp = c;
            c = e;
            e = temp;
        }
        if (d > e) {
            temp = d;
            d = e;
            e = temp;
        }
        System.out.println("升序排列后,结果为:");
        System.out.println("c=" + c + ", d=" + d + ", e=" + e);
//方法二,用if-else结构,先拿两个数比较,大的存给bigger,小的存给smaller,然后再用第三个数和bigger、smaller里的比,不如方法一。

int bigger=0,smaller=0,max=0;//类变量声明时初始化,否则后面用时不方便。
             if(c>=d){
     bigger=c;
     smaller=d;
    }else if(c=bigger){//最大是e,最小是smaller
    max=e;
    }else if(e>=smaller){//否则最大是bigger,还得比较e和smaller
    max=bigger;
    bigger=e;
    }else {//此时最小是e
    max=bigger;
    bigger=smaller;
    smaller=e;
    }
    System.out.println("c=" + smaller + ", d=" + bigger + ", e=" + max);

/**方法三,用comp函数挑出中间值。
详情见类Mediant,主要是这个三目,拓展数的排列,A(n,m)=n(n-1)(n-2)……(n-m+1)=n!/(n-m)!
int n=a >= b ? (a >= c ? (b >= c ? b : c) : a) : (a >= c ? a : (b >= c ? c : b));
*/

package day03; //功能:利用comp函数+三目法求中间值
import java.util.Scanner;
public class Mediant {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请依次输入三个数,以空格隔开:");
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
int n=comp(a,b,c);//下面要定义这个函数
System.out.println(n);
}
static int comp(int a, int b, int c){
    return a >= b ? (a >= c ? (b >= c ? b : c) : a) : (a >= c ? a : (b >= c ? c : b));
}
}
/*方法四,直接三目法//这种用三目取中间数的方法除非三个数互不相同,否则有bug,但可解决。看方法三。        

       

int minimum=(cd)?((c>e)?c:e):((d>e)?d:e);
        int mediant=((c!=maximum)&&(c!=minimum))?c:(((d!=maximum)&&(d!=minimum))?d:e);
//直接用         int mediant=c >= d ? (c >= e ? (d >= e ? d : e) : c) : (c >=e ? c: (d >= e ? e : d));
        System.out.println("升序排列是:c="+minimum+", d= "+mediant+", e= "+maximum);


        */

/**方法五,利用三目进行加减运算,不过只适合三个数
同上面,得最大max、最小min,则中间数mediant=总和sum-max-min
*/

//方法六,利用系统库Arrays排序方法。见类ArraysMethod,拓展了,可随意输入n个数。

package day03;

import java.util.Scanner;
import java.util.Arrays;

public class ArraysMethod {

public static void main(String[] args) {
sortCommand();
}

public static void sortCommand(){
System.out.println("请确定您要输入几个数:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] array=new int[n];
System.out.println("\n\t请输入"+n+"个数:");


for (int x=0;x大排列:\n");//"\t"在同一个缓冲区内横向跳8个空格,\b:一个黑点;\f: 。
    for (int y=0;y<=n-1;y++){
    System.out.print(array[y]+" ");  
    }
         System.out.println("\n\t大====>小排列:\n");
    for (int y=array.length-1;y>=0;y--){
    System.out.print(array[y]+" ");
    }

}


}


你可能感兴趣的:(Java,Study,of,Tarena)