java基本语法


前言

java的基本语法,来自pta上面的题

一、根据输入的正整数y所代表的年份,计算输出该年份是否为闰年


闰年的判断标准:

能够被4整除且不能被100整除的年份

或者能够被400整除的年份

输入格式:

输入n取值范围是 【1..3000】

输出格式:

是闰年,输出 yes

非闰年,输出 no

输入样例:

在这里给出一组输入。例如:

100

输出样例:

在这里给出相应的输出。例如:

no

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

二、身体质量指数(BMI)测算(分数 10)

注意:该题只得了9分

体重是反映和衡量一个人健康状况的重要标志之一,过胖和过瘦都不利于健康,BMI(身体质量指数)计算方法:体重(以千克为单位)除以身高(以米为单位)的平方。中国成人正常的BMI应在18.5-24之间,如果小于18.5为体重不足,如果大于等于24为超重,大于等于28为肥胖。请编写程序,测算身体状态。

输入格式:

两个数值:体重(以千克为单位),身高(以米为单位),数值间以空格分隔。例如:65.5 1.75。
注意:体重的世界纪录是727公斤,身高的世界纪录是2.72米。输入数据上限不得超过纪录,下限不得小于等于0;

输出格式:

输入数值超出范围 :输出“input out of range”。例如:-2 3或者125 5。
BMI小于18.5 :输出“thin”。
BMI大于等于18.5小于24 :输出“fit”。
BMI大于等于24小于28 :输出“overweight”。
BMII大于等于28 :输出“fat”。

输入样例0:

在这里给出一组输入。例如:

-2  8

输出样例0:

在这里给出相应的输出。例如:

input out of range

输入样例1:

在这里给出一组输入。例如:

70 1.75

输出样例1:

在这里给出相应的输出。例如:

fit


import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		double weigh,high,sum=0;
	    Scanner innext= new Scanner(System.in);
		weigh=innext.nextDouble();
		high=innext.nextDouble();
		sum=(double)weigh/(high*high);
		if((weigh > 727) || (weigh <=0) || (high>2.72) ||( high <= 0))
            System.out.println("input out of range");
         else if(sum>=18.5&&sum<=24)
        	 System.out.println("fit");
        else if(sum<18.5 && sum>0)
        	 System.out.println("thin");
        else if(sum>=24&&sum<28)
        	 System.out.println("overweight");
        else 
       	     System.out.println("fat");
	  
	}}

三 、点是否在圆内?(分数 10)

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

输入格式:

输入任意一个点的x轴和y轴坐标值,且两个值之间空格分隔。

输出格式:

若点在圆内,输出1,否则输出0。

输入样例:

4 5

输出样例:

1
import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		int x,y;
		Scanner s=new Scanner(System.in);
        
		x=s.nextInt();
		y=s.nextInt();
		if(x*x+y*y < 100)  //易错点,判断点是否在圆内,套用公式
		  System.out.println('1');
		else
			System.out.println('0');
        s.close();
	}}

 四、字符串(分数 20)

对于输入字符串s(假设字符串只包含字母构成的单词和空格),完成如下功能:

  1. 统计该字符串中字母c出现的次数
  2. 求该字符串的逆
  3. 输出该字符串中子串str的所有位置(无需考虑子串叠加现象)
  4. 将字符串中每个单词的第一个字母变成大写并输出

输入格式:

字符串s
字母c
子串str

输出格式:

c在s中出现的次数
s的逆
str在s中的所有位置
所有单词首字母大写后的字符串

输入样例:

在这里给出一组输入。例如:

I scream you scream we all scream for icecream
m
eam

输出样例:

在这里给出相应的输出。例如:

4
maerceci rof maercs lla ew maercs uoy maercs I
5 16 30 43
I Scream You Scream We All Scream For Icecream
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();

        String strc=sc.nextLine();//待输入字母,因为Java中没有直接读取单个字符的函数,
        //所以将字母输入到字符串中,调用String中的charAt()函数
        //取第一个字符即为我们想要输入的单个字符
        char c=strc.charAt(0); 

        String str=sc.nextLine();  //输入要查找的子串
        char []ns=s.toCharArray(); //将字符串放入到字符串数组中
        int count=0;
       // System.out.println(ns);
        for (int i = 0; i < ns.length ; i++) {
            if(ns[i]==c){
                count++;
            }
        }
        System.out.println(count);
        for (int i = 0; i < ns.length/2 ; i++) {  //求字符串的逆
            char temp=ns[i];
            ns[i]=ns[ns.length-i-1];
            ns[ns.length-i-1]=temp;
        }
        System.out.println(ns);

        int head=0;
        int []arr=new int[s.length()];
        String []nns=s.split(" ");//将句子中的各个单词分隔
        int j=0;
        int preStrLength=0;
        while(true)
        {
            //indexOf——返回指定字符第一次出现的字符串内的索引
            int n = s.indexOf(str);
            //找不到返回-1,循环结束
            if (n == -1) {
                break;
            }
            //存储找到的值(下标)
            //arr[j++]=n;
            //第一次head=0,从0开始找,之后head变为下标n+要找字符串的长度
            //应该从这里开始查找该子串,不加长度会出问题的!
            //head = n + str.length();
            if(j != 0)
                System.out.print(' ');
            //break;
            System.out.print((n + preStrLength));//字符串位置
            j++;
            s= s.substring(n +str.length());//截取
            preStrLength +=(n +str.length());
        }
//        System.out.print(arr[0]);
//        for (int i = 1; i < j ; i++) {
//            System.out.print(" " + arr[i]);
//        }
        System.out.println();

        String s1=new String();
        for (int i = 0; i < nns.length ; i++) {
         if(i==nns.length-1) //toUpperCase()将字符串中的字母都变成大写字母,toLowerCase()反之
            s1+=nns[i].substring(0,1).toUpperCase()+nns[i].substring(1);
         else   //最后一个单词无空格
            s1+=nns[i].substring(0,1).toUpperCase()+nns[i].substring(1)+" ";

        }

        System.out.println(s1);
        sc.close();
    }
}

五、 房产税费计算2022(分数 12)

注意:运行正确,但是在pta才得10分

房屋交易在日常生活中非常常见的事情,房屋交易时要额外支付各种税费,按2022年房产交易新政策的规定买房人应缴纳税费包括:

1、契税:首次购房评估额90平(含)内1%、90平-144平(含)内1.5%,超过144平或非首 次3%,买方缴纳。

2、印花税:房款的0.05%。

3、交易费:3元/平方米。

4、测绘费:1.36元/平方米。

5、权属登记费及取证费:一般情况是在200元内。

输入格式:

四个数据,以空格分隔:
1、第几次购房(整数)
2、房款(整数/单位万元)
3、评估价(整数/单位万元)
4、房屋面积(浮点数/单位平方米)。
例如:1 100 100 90。

输出格式:

契税、印花税、交易费、测绘费(以元为单位),以空格分隔。例如:10000.0 500.0 270.0 122.4

输入样例:

在这里给出一组输入。例如:

1 100 100 90

输出样例:

在这里给出相应的输出。例如:

10000.0 500.0 270.0 122.4
import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		int count,price,estimate;
		double area,sum1=0,sum2=0,sum3=0,sum4=0;
		Scanner input=new Scanner(System.in);
		count=input.nextInt();
		price=input.nextInt();
		estimate=input.nextInt();
		area=input.nextDouble();
		sum2=price*0.0005*10000;
		sum3=3*area;
		sum4=1.36*area;
		if(count == 1)
		{
			if(area <= 90)   
			{  sum1=estimate*0.01*10000;}
				
			else if(area > 90 && area <= 144)  
			{  sum1=estimate*0.015*10000;}
			else if(area > 144)
			{  sum1=estimate*0.03*10000;}
		}
		else
			sum1=estimate*0.03*10000;
		System.out.println(sum1+" "+sum2+" "+sum3+" "+sum4);
		input.close();
	}
	}

六、 画菱形(分数 10)

菱形是一种特殊的平行四边形,是四条边均相等的平行四边形。题目给出菱形的边长n,用*画出菱形。如n=1,输出:

*

n=2,输出:

 *
*** 
 * 

n=3,输出:

  * 
 ***
*****
 ***
  *

那么,你能用程序来实现么?

输入格式:

输入菱形的边长n,1<n<100。

输出格式:

输出对应的用*表示的菱形。

输入样例:

4

输出样例:

    *
   ***
  *****
 *******
  *****
   ***
    *

题目分析: 找菱形规律

      找空格、星号与行的关系,有题可知,有题可知,菱形边长为n时,可把菱形分为上三角和下三角。

上三角是n行,星号是2*n-1,设每一行是i,而星号前面的空格是n-i。下三角是n-1的倒三角,第一行为n-1,设每一行为i,空格是n-i,星号是2*i-1,类似倒置的上三角。


import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		int i,j,n,z,m;
		Scanner input=new Scanner(System.in);
		n=input.nextInt();
		for(i=1;i<=n;i++)  //菱形的上三角
		{
			for(j=1;j<=n-i;j++)
				System.out.print(" ");
			for(j=1;j<=2*i-1;j++)
			    System.out.print("*");
			System.out.print("\n");
		}
		for(i=n-1;i>0;i--) //菱形的下三角
		{
			for(j=1;j<=n-i;j++)
			{	
				     System.out.print(" ");
			}
			for(m=1;m<=2*i-1;m++)
			{ 
			         System.out.print("*");}
			    System.out.print("\n");
			}
			
		}
		}

 七、Java求乘积(分数 10)

注意:该题的答案运行正确,但在pta只得八分

编写一个Java应用程序,用户从键盘只能输入整数,以空格分隔(输入0代表结束输入),程序计算并输出这些整数的乘积。

输入格式:

从键盘只能输入不多于10个整数,以空格分隔(输入0代表结束输入)。整数的输入范围为【-1000-1000】

输出格式:

在一行中输出乘积的值。

输入样例:

在这里给出一组输入。例如:

2 3 8 0

输出样例:

在这里给出相应的输出。例如:

48


import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		Scanner s= new Scanner(System.in);
        int i=0,sum=1,k=0;
        while(((i=s.nextInt()) != 0) && k<=10 ){
        	sum=i*sum;
        	k++;
        }
        System.out.println(sum);
	}}

八、 学号识别(分数 10)

学校的学号由8位数字组成,前两位是入学年份(省略了20);第3、4位是学院编号,01代表材料学院,02代表机械学院,03代表外语学院,20代表软件学院;第5、6位是学院内部班级编号,最后两位是班级内部学号。如:18011103,入学年份是2018年,材料学院,11班,03号

输入格式:

8位数字组成的学号。例如:18011103
注意:输入学号不是8位或者学院编号不是01、02、03、20其中之一,属于非法输入

输出格式:

学号每一项的完整说明。例如:
入学年份:2018年
学院:材料学院
班级:11
学号:03

注意:如非法输入,输出“Wrong Format"

输入样例:

在这里给出一组输入。例如:

18011103

输出样例:

在这里给出相应的输出。例如:

入学年份:2018年
学院:材料学院
班级:11
学号:03

输入样例1:

在这里给出一组输入。例如:

18013
import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		Scanner s= new Scanner(System.in);
		String x = s.next();
		int institute = Integer.parseInt(x.substring(2,4));//字符串转换为整型
		if(((x.length()) != 8)||(institute != 01 && institute != 02 && institute != 03 && institute != 20))
			{System.out.println("Wrong Format");
			s.close();}
		else
		{
			System.out.println("入学年份:"+"20"+ x.substring(0,2)+"年");
			if(institute == 01)
				System.out.println("学院:材料学院");
			else if(institute == 02)
			   System.out.println("学院:机械学院");
			else if(institute == 03)
			   System.out.println("学院:外语学院");
			else if(institute == 20)
			  System.out.println("学院:软件学院");
		
			 System.out.println("班级:"+ x.substring(4,6));
			 System.out.println("学号:"+ x.substring(6,8));}
			 s.close();
	}}

九、 定义完数方法(分数 10)

一个数如果恰好等于它的因子(除自身外)之和,这个数就称为"完数"。比如6=1+2+3,因此6是完数。在Main类里面定义一个方法 方法名为isPerfect 返回类型为boolean,该方法要求接收用户输入的一个整数,并判断该整数是否是完数,将判断结果返回,在main函数中 通过键盘输入这个整数,然后调用isPerfect判断这个整数判断是否是完数,如果是输出n:Yes,否则输出n:No ,n是这个具体的数,其中在main方法中调用方法的格式为 : boolean result = isPerfect(n);

输入格式:

从键盘输入一个整数

输出格式:

在显示器输出Yes 或者No

输入样例:

在这里给出一组输入。例如:

6

输出样例:

在这里给出相应的输出。例如:

6:Yes
import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		String end ;
		boolean result = isPerfect(n);
		if(result)
			end="Yes";
		else
			end="No";
		System.out.println(n+":"+end);
		s.close();
		
	}
	
	public static boolean isPerfect(int n)
	{
		int i,b=0;
		for(i=1;i<n;i++)
		{
			if(n%i==0)
				b=i+b;
		}
			
		if(n == b)
			return true;
		else
			return false;
	}
	
	}

十、 判断一个点是否在园内(分数 10)

在Main类中编写方法,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心、半径为r的圆内。方法的首部定义为:

public boolean inCircle(int x,int y,int r);

方法在圆内,则返回true,否则返回false

在main方法中:

  1. 通过键盘输入点的x,y坐标以及圆的半价
  2. 调用inCircle方法,如果在圆内,输出yes,否则输出no

输入格式:

通过键盘入在一行中给出3整数,表示一个点坐标x,y,以及圆的半价

输出格式:

对每一组输入,在一行中输出yes或者no。

输入样例:

在这里给出一组输入。例如:

3 4 6
2 3 2

输出样例:

在这里给出相应的输出。例如:

yes
no

import java.util.Scanner;
public class Main {
	public static void main(String[] args){
		int x,y,r;
		Scanner s = new Scanner(System.in);
		x = s.nextInt();
		y = s.nextInt();
		r = s.nextInt();
		
		boolean re = inCicle(x, y, r);
		if(re)
			System.out.println("yes");
		else
			System.out.println("no");
	}
	public static boolean inCicle(int x, int y,int r)
	{
		if(x*x + y*y < r*r)
			return true;
		else
			return false;
		}
	}

总结

1.字符串的题比较复杂,关键是对String类的常有方法,可以搜此关键词,了解并运用

2.每个题都会有陷阱,秘诀就是仔细审题,尤其输出格式方面

3.类如菱形的题,突破口就是找规律

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值