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=23
7=7
8=222
9=33
10=25
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 );
}
}