java-PTA-复习

1、计算年利率

基本年利率7.7%
如果一年以内利率给5折
如果三年以内利率为7折
如果五年以内利率为100%
如果五年以上利率为1.1倍
输入一个年份,计算这个年份下的实际利率是多少?

输入格式:
输入一个整数。例如:6。
输出格式:
实际利率=8.47%

import java.util.Scanner;
public class Exercise3{
    public static void main(String args[]){
        Scanner myscanner=new Scanner(System.in);
        int year=myscanner.nextInt();
        double lilv=0;
        if(year>0){
            if(year<1){
                lilv=0.077*0.5;
            }
            else if(year>=1&&year<3){
                lilv=0.077*0.7;
            }
            else if(year>=3&&year<5){
                lilv=0.077*1;
            }
            else
                lilv=0.077*1.1;

            System.out.println("实际利率="+lilv*100+"%");
        }
        else
        System.out.println("error");
    }
}

2、99乘法表

import java.util.Scanner;
public class Exercise3{
    public static void main(String args[]){
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                System.out.print(i+"*"+j+"="+(i*j)+"\t");
            }
            System.out.println();
        }
    }
}

3、点是否在圆内

编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心、半径为10的圆内。

输入格式:
输入任意一个点的x轴和y轴坐标值,且两个值之间空格分隔。
输出格式:
若点在圆内,输出1,否则输出0。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {            
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] coord = s.split("\\s+");
        int x = Math.abs(Integer.parseInt(coord[0]));
        int y = Math.abs(Integer.parseInt(coord[1]));
        double radius = Math.sqrt(x * x + y * y); 
        if (radius<10){
            System.out.println(1);
        }else {
            System.out.println(0);
        }
    }
}

4、累加求和

输入20以内的整数,编程计算 k=1∑nk!,并输出计算结果。

输入格式:
输入正整数N,1<=N<=20

输出格式:
输出计算结果

import java.util.Scanner;
public class Main{
   public static void main(String[]args) {
    Scanner sc=new Scanner(System.in);
       int N=sc.nextInt();
      long  i,j,sum,a;
       for(i=1,sum=0;i<=N;i++)
       {    
          for(j=1,a=1;j<=i;j++)
          { a=a*j;
          }
        sum=sum+a;    
       } 
       System.out.printf("%d",sum);     
   }    
}

5、分解质因数

求出区间[a,b]中所有整数的质因数分解。

输入格式:
输入两个整数a,b。数据规模和约定  2<=a<=b<=10000
输出格式:
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
输入样例:
在这里给出一组输入。例如:3 10
输出样例:
在这里给出相应的输出。例如:
3=3
4=22
5=5
6=2
3
7=7
8=222
9=33
10=2
5

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Integer a = sc.nextInt();
		Integer b = sc.nextInt();
		for (int i = a; i <= b; i++) {// 输入值大于等于3
			if (i >= 3) {
				String m = "";
				int k = 2;
				int j = i;
				while (j != k) {// 如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数n
					if (j % k == 0) {
						m = m + k + "*";
						j = j / k;
					}
					// 如果n不能被k整除,则用k+1作为k的值
					else if (j % k != 0) {
						k++;
					}
				}
				m = m + k;
				System.out.println(i + "=" + m);
			} else {
				System.out.println(i + "=" + i);
			}
		}
	}
}

6、jmu-Java-02基本语法-06-枚举

定义一个枚举类型Grade来表示考试的4个等级,值包含A,B,C,D,E
编写一个函数Grade getGrade(int score)将传递进来的score转化为枚举类型
=90 and <=100返回A,
=80 and <90 返回B,
=70 and <80 返回C,
=60 and <70返回D,
其他的返回E
#main方法
输入分数后,调用getGrade函数返回相应的Grade,使用switch根据Grade,根据分数打印不同的评价:
Excellent Good Average Fair Poor

import java.util.Scanner;
enum Grade{
    A,B,C,D,E;
}
public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()) {
           int score = sc.nextInt();
           printGradeInfo(getGrade(score));
       }
        sc.close();
    }
    public static Grade getGrade(int score) {
        Grade g ;
        switch((int)score/10) {
        case 10:
        case 9:
            System.out.println("Excellent");
            g=Grade.A;
            break;
        case 8:
            System.out.println("Good");
            g=Grade.B;
            break;
        case 7:
            System.out.println("Average");
            g=Grade.C;
            break;
        case 6:
            System.out.println("Fair");
            g=Grade.D;
            break;
        default:
            System.out.println("Poor");
            g=Grade.E;
        }
        return g;        
    }
    public static void printGradeInfo(Grade grade){
           System.out.println("class name="+Grade.class);
           System.out.println("grade value="+grade);
    }
    
}

7、判断闰年

import java.util.*;
public class Main
{
    public static void main(String args[])
    {
        Scanner input=new Scanner(System.in);
        int y=input.nextInt();
        if(y%400==0)System.out.println("yes");
        else if(y%100!=0&&y%4==0)System.out.println("yes");
        else System.out.println("no");     

    }
}

8、计算摄氏温度

import java.util.Scanner;
public class Main 
{
       public static void main(String[] args)
       {
             double a;
           int b;
             b=100;
             a = 5*(double)(100-32)/9;
             System.out.println( "%d %.2f" , b,a );
       }
}

9、设计直线类

class Point
{
    public double x;
    public double y;
    public Point(double _x,double _y)
    {
        this.x=_x;
        this.y=_y;
    }
}
class Line
{
    Point p1,p2;
    public Line(Point p1,Point p2)
    {
        this.p1=p1;
        this.p2=p2;
    }
    public double getLength()
    {
        return Math.sqrt(Math.pow((p1.x-p2.x), 2)+Math.pow((p1.y-p2.y), 2));
    }
}

10、 复数类的定义

import java.util.*; 
class Complex{
	private double shi;
	private double xu;
	public Complex() {
	}
	public Complex(double s,double x) {
		this.shi = s;
		this.xu = x;
	}
	
	public double getShi() {
		return shi;
	}
	public double getXu() {
		return xu;
	}
	public void setRealPart(double s) {
		this.shi = s;
	}
	public void setImaginaryPart(double x) {
		this.xu = x;
	}
	public Complex add(Complex a) {
		Complex complex = new Complex();
		complex.shi = this.shi+a.getShi();
		complex.xu = this.xu+a.getXu();
		return complex;
	}
	public Complex sub(Complex a) {
		Complex complex = new Complex();
		complex.shi = this.shi-a.getShi();
		complex.xu = this.xu-a.getXu();
		return complex;
	}
	@Override
	public String toString() {
		if(shi==0&&xu==0) {
			return 0+"";
		}
		if(shi==0) {
			return xu+"i";
		}
		if(xu>0) {
			return shi + "+" + xu + "i";
		}
		if(xu==0) {
			return shi+"";
		}
		return shi +""+ xu + "i";
	}
}
 
public class Main{
	public static void main(String [] args){
        Complex a=new Complex();
        Complex b=new Complex();
        Scanner in=new Scanner(System.in);
        a.setRealPart(in.nextDouble());
        a.setImaginaryPart(in.nextDouble());
        b.setRealPart(in.nextDouble());
        b.setImaginaryPart(in.nextDouble());
        System.out.println(a);
        System.out.println(b);
        System.out.println(a.add(b));
        System.out.println(a.sub(b));      
	}
}

11、PC类

public class Main {
	public static void main(String arg[]){
		CPU cpu=new CPU();
		cpu.setSpeed(2200);
		HardDisk disk=new HardDisk();
		disk.setAmount(200);
		PC pc=new PC();
		pc.setCPU(cpu);
		pc.setHardDisk(disk);
		pc.show();
		
	}
 
}
class PC{
	CPU cpu;
	HardDisk HD;
	void setCPU(CPU x){
		cpu=x;
	}
	void setHardDisk(HardDisk x){
		HD=x;
	}
	void show(){
		System.out.println("CPU = "+cpu.speed);
        System.out.println("HD = "+HD.amount);
	}
}
class HardDisk{
	int amount;
	void setAmount(int x){
		amount=x;
	}
	int getAmount(){
		return amount;
	}
}
class CPU{
	int speed;
	void setSpeed(int x){
		speed=x;
	};
	int getSpeed(){
		return speed;
	};
}

12、人口统计

public static int numofHan(String data[])
    {
    	String s="汉族";
    	int num=0;
    	for(int i=0;i<data.length;i++)
    	{
    		if(data[i].indexOf(s)>=0)
    		{
    			num++;
    		}
    	}
    	return num;
	
    }

13、使用二维数组实现Matrix(矩阵)

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int x1,y1,x2,y2;//第一个与第二个矩阵的行数与列数
        x1=sc.nextInt();
        y1=sc.nextInt();
        int[][] Matrix1=new int[x1][y1];
        for(int i=0;i<x1;i++){
            for(int j=0;j<y1;j++){
                Matrix1[i][j]=sc.nextInt();
            }
        }//录入第一个矩阵
        x2=sc.nextInt();
        y2=sc.nextInt();
        int[][] Matrix2=new int[x2][y2];
        for(int i=0;i<x2;i++){
            for(int j=0;j<y2;j++){
                Matrix2[i][j]=sc.nextInt();
            }
        }//录入第二个矩阵
        int[][] Matrix3=new int[x1][y2];
        for(int i=0;i<x1;i++){
            for(int j=0;j<y2;j++){
                for(int n=0;n<y1;n++){
                    Matrix3[i][j]+=Matrix1[i][n]*Matrix2[n][j];
                }
            }
        }//计算出两个矩阵的乘积
        for(int i=0;i<x1;i++){
            for(int j=0;j<y2;j++){
                System.out.print(Matrix3[i][j]+" ");
            }
            System.out.println();
        }
        }
}

14、程序改错1:对象与数组

import java.util.*;

import java.util.Map.Entry;
//--------------------Main.java
class Student {
  private String name; 
  private double score;

  public Student(String string, double d) {
	// TODO Auto-generated constructor stub
	  name=string;
	  score=d;
}

public  String getName(){
      return name;
  }

  public void setName(String name){
      this.name = name;
  }

  public double getScore(){
      return score;
  }

  public void setScore(double score){
      this.score =score;
  }

  public String  toString( ){
      return  this.name + "--" +this.score ;
  }

}

public class Main {
  public static void main(String args[])    {    
      String []name = {"Tom","Jim","Apple","Rose","Jack"    ,"Lucy"};
      double [] score = {98,76,85,66,72};

      Student [] sGroup = new Student[ name.length ];

      for( int i = 0 ; i < sGroup.length ; i++) {
    	  if(i<score.length) {
    		sGroup[i] = new Student (name[i], score[i]);  
    	  }else {
    		  sGroup[i] = new Student (name[i], 0.0);
    	  }
    	  
      }
    	  
          

      System.out.println("Student");
      for( int i = 0 ; i < sGroup.length ; i++)
          System.out.println(sGroup[i]);

      System.out.println("end");
  }
}

15、数组乱炖

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

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n= sc.nextInt();
        if (n>0){
            int[] a=new int[n];
            int[] b=new int[n];
            for (int i = 0; i < n; i++) {
                a[i]= sc.nextInt();
            }
            System.out.println(Arrays.toString(a));
            System.arraycopy(a, 0, b, 0, a.length);
            System.out.println(Arrays.toString(b));
            Arrays.sort(a);
            System.out.println(Arrays.toString(a));
            int m= Arrays.binarySearch(a,sc.nextInt());//这里不能使用顺序查找
            if(m>-1) System.out.println(m);//下标有效则找到
            else System.out.println("no");
            if (n>=2){
                a[0]=9;
                a[1]=9;
            }
            System.out.println(Arrays.toString(a));
            if (Arrays.equals(a,b)) System.out.println("yes");
            else System.out.println("no");
        }
    }
}

16、 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String a = sc.nextLine();// next()方法不能识别空格
		char arr[] = a.toCharArray();// 将字符串转为字符
		int letter = 0;
		int number = 0;
		int space = 0;
		int other = 0;
		for (int i = 0; i < arr.length; i++) {
			arr[i] = a.charAt(i);
			if ((arr[i] >= 63 && arr[i] <= 90) || (arr[i] >= 97 && arr[i] <= 122)) {
				letter++;
			} else if (arr[i] >= 48 && arr[i] <= 57) {
				number++;
			} else if (arr[i] == 32) {
				space++;
			} else {
				other++;
			}
 
		}
		System.out.println("字母个数:" + letter );
        System.out.println("数字个数:" + number );
        System.out.println("空格个数:" + space );
        System.out.println("其他字符个数:" + other );
	}
 
}