2021-09-01 新手上路java:pta习题及知识点总结(1)

目录

7-1 sdut-sel-2 汽车超速罚款(选择结构) (10 分)

7-2 Java中二进制位运算 (10 分) 

split() 方法用于把一个字符串分割成字符串数组。

Integer.parseInt(s)用法:

Integer.valueOf(s)用法:

Integer.parseInt(s)与Integer.valueOf(s)的区别:

nextLine读取缓冲区中的一行字符串

7-3 sdut-最大公约数和最小公倍数 (10 分)

求约数和倍数

hasNextInt()

7-4 判断回文 (10 分)

StringBuffer()的基本使用

1.StringBuffer和String的区别?

2. StringBuffer的构造方法:

3.StringBuffer()的方法:

 4.StringBuffer的添加功能:

5.StringBuffer的删除功能:

6.StringBuffer的截取功能:

7.StringBuffer的替换功能:

8.StringBuffer的反转功能:

7-5 字符串操作 (15 分) 

StringBuilder的常用方法

一、创建Stringbuilder对象

1、append(String str)/append(Char c):字符串连接

2、toString():返回一个与构建起或缓冲器内容相同的字符串

3、appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this

4、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)

5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)

6、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串

7.StringBuilder的reverse()方法:

7-6 N个数的排序与查 (10 分) 

7-7 二进制的前导的零 (15 分) 

Integer类中有静态方法:



7-1 sdut-sel-2 汽车超速罚款(选择结构) (10 分)

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int speedLimit,speed,fine;
speedLimit=sc.nextInt();
speed=sc.nextInt();

if(speed<=speedLimit)
System.out.println("Congratulations, you are within the speed limit!");
else if(speed-speedLimit>=1 && speed-speedLimit<=20)
System.out.println("You are speeding and your fine is 100.");
else if(speed-speedLimit>=21 && speed-speedLimit<=30)
System.out.println("You are speeding and your fine is 270.");
else
System.out.println("You are speeding and your fine is 500.");
}
}

 基础问题

7-2 Java中二进制位运算 (10 分) 

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        String []arr = str.split("\\s+");
        int num1 = Integer.parseInt(arr[0]);
        int num2 = Integer.parseInt(arr[2]);
        switch(arr[1]) {
        	case "&":
        		System.out.println(num1 + " & " + num2 + " = " + (num1&num2));
        		break;
        	case "|":
        		System.out.println(num1 + " | " + num2 + " = " + (num1|num2));
        		break;
        	case "^":
        		System.out.println(num1 + " ^ " + num2 + " = " + (num1^num2));
        		break;
        	default:
        		System.out.println("ERROR");
        		break;
        }
}
}

数组的创建

split() 方法用于把一个字符串分割成字符串数组。

\\s+ 是以空格为间隔,读取数组元素

Integer.parseInt(s)用法:

        Integer.parseInt(s)的作用就是把字符串s解析成有符号的int基本类型。

Integer.valueOf(s)用法:

        Integer.valueOf(s)把字符串s解析成Integer对象类型,返回的integer 可以调用对象中的方法。

Integer.parseInt(s)与Integer.valueOf(s)的区别:


        Integer.parseInt(s)
        Integer.parseInt(s)多次解析同一个字符串得到的int基本类型数据是相等的,可以直接通过“==”进行判断是否相等。
        int是基本类型,不含有equals方法,所以只能用“==”比较,基本类型用“==”比较的是两个值的大小。

        Integer.valueOf(s)
        Integer.valueOf(s)多次解析相同的一个字符串时,得到的是Integer类型的对象,得到的对象有时是同一个对象,有时是不同的对象,要根据把s字符串解析的整数值的大小进行决定:如果s字符串对应的整数值在 -128~127之间,则解析出的Integer类型的对象是同一个对象;如果s字符串对应的整数值不在-128~127之间,则解析出的Integer类型的对象不是同一个对象。不管对象是否相等,对象中的value值是相等的。

nextLine读取缓冲区中的一行字符串

7-3 sdut-最大公约数和最小公倍数 (10 分)

给定2个正整数,求它们的最大公约数和最小公倍数,并输出。

输入格式:

输入有若干组。

每组数据,在一行中给出两个正整数M和N(≤1000),中间有1个空格。

输出格式:

对于每组输入,在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1个空格分隔。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	while(sc.hasNextInt()) {
    		int a = sc.nextInt();
    		int b = sc.nextInt();
    		System.out.println(yueshu(a,b)+" " +beishu(a,b));
    	}
    }
    public static int yueshu(int a,int b) {
    	int temp = 0;
    	if(a<b)
    	{
    		temp = a;
    		a = b;
    		b = temp;
    	}
    	while(b!=0) {
    		temp = a%b;
    		a = b;
    		b = temp;
    	}
    	return a;
    }
    public static  int beishu(int a,int b)
    {
    	int temp;
    	temp = yueshu(a,b);
    	return a*b/temp;
    }
}

求约数和倍数

hasNextInt()

'hashNextInt'表示下一个输入是否可以安全地读为'int',所以在你试图读取一个不是'int'的错误之前调用它才有意义。 

总结

  • 用hasNextInt()作为判断下一个输入是否为数字需要配合nextInt()方法使用
  • 需要注意的是:在使用hasNextInt()方法时,一般判断语句if或循环语句while在前,输入数据在后,以起到先判断数据是否为整型,后执行代码的作用。 

7-4 判断回文 (10 分)

// package cn.ssdut.output;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    	int n;
        Scanner scanner = new Scanner(System.in);
        	n = scanner.nextInt();
        System.out.println(GetLength(n));
        JudgeHuiWen(n);
        scanner.close();
    }
        

public static int GetLength(int ss)
{
	int i=0,j=0;
	for(i=0;i<ss;ss/=10)
	{
		if(ss>0)
			j++;
	}
	return j;
}
public static boolean JudgeHuiWen(int ss)
{
	String a = "";
	a = ss +"";
	StringBuffer n = new StringBuffer(a);
	n.reverse();
	int i,sum=0;
	for(i=0;i<a.length();i++)
	{
		if(a.charAt(i) == n.charAt(i))
			sum++;
	}
	if(sum == a.length())
	{
		System.out.println("Y");
		return true;		
	}
	else
	{
		System.out.println("N");
		return false;
	}	
}
}

StringBuffer()的基本使用

        对字符串进行拼接操作。

1.StringBuffer和String的区别?

        前者长度和内容可变,后者不可变。

2. StringBuffer的构造方法

  •  public StringBuffer():无参构造方法     
  •  public StringBuffer(int capacity):指定容量的字符串缓冲区对象
  •  *public StringBuffer(String str)指定字符串内容的字符串缓冲区对象

3.StringBuffer()的方法:

  • public int Capacity();返回当前容量 理论值
  • public int length() 返回长度(字符数) 实际值

 4.StringBuffer的添加功能:

  • * public StringBuffer append(String str)

* 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身

  • * public StringBuffer insert(int offset,String str)

* 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

5.StringBuffer的删除功能:

  • public StringBuffer deleteCharAt(int index)

删除指定位置字符,并返回本身

  • public StringBuffer delete(int start,int end)

删除从指定位置开始,并从指定位置结束字符,并返回本身
注:包左不包右

6.StringBuffer的截取功能:

注意返回值类型不是StringBuffer

  • public String substring(int start)
  • public String substring(int start,int end)

7.StringBuffer的替换功能


public StringBuffer replace(int start,int end,String str),从start到end用str替换

8.StringBuffer的反转功能:


public StringBuffer reverse()

7-5 字符串操作 (15 分) 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        StringBuilder stringBuilder = new StringBuilder(s.replaceAll("\\d+",""));
        System.out.println(stringBuilder.reverse().toString());
    }
}

StringBuilder的常用方法

在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生,下面就Stringbuilder的使用做个简要的总结:

一、创建Stringbuilder对象


StringBuilder strB = new StringBuilder();

1、append(String str)/append(Char c):字符串连接


System.out.println("StringBuilder:"+strB.append("ch").append("111").append('c'));

2、toString():返回一个与构建起或缓冲器内容相同的字符串


System.out.println("String:"+strB.toString());

3、appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this


System.out.println("StringBuilder.appendCodePoint:"+strB.appendCodePoint(2));

4、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)


strB.setCharAt(2, 'd');
System.out.println("StringBuilder.setCharAt:" + strB);

5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)


System.out.println("StringBuilder.insertString:"+ strB.insert(2, "LS"));
System.out.println("StringBuilder.insertChar:"+ strB.insert(2, 'L'));

6、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串


System.out.println("StringBuilder.delete:"+ strB.delete(2, 4));

7.StringBuilder的reverse()方法:

用于反转StringBuilder中的字符。

该方法有助于将此字符序列替换为相反的序列。

返回值:反转字符后,此方法返回StringBuilder对象。

7-6 N个数的排序与查 (10 分) 

从键盘输入N个整数,并输出指定的某个整数在这N个整数中的按照由小到大的顺序排列的位次(最小的位次是1,最大的位次是N,指定的整数如果不在这N个数中,则其位次是-1)

//package cn.ssdut.output;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	int n = sc.nextInt();
    	int nums[] = new int[n];
    	int i;
    	for(i=0;i<n;i++)
    	{
    		nums[i] = sc.nextInt();
    	}
    	int temp,j;
    	for(i=0;i<n-1;i++)
    	{
    		for(j=i;j<n;j++)
    		{
    			if(nums[i] > nums[j])
    			{
    				temp = nums[i];
    				nums[i] = nums[j];
    				nums[j] = temp;
    			}
    		}
    	}
    	int m = sc.nextInt();
    	int x = n+1;
    	for(i=0;i<n;i++)
    	{
    		if(nums[i] == m)
    		{
    			x = i;
    		}
    	}
    	if(x<=n)
    	{
    		System.out.println(x+1);
    	}
    	else {
    		System.out.println(-1);
    	}
    }
}

7-7 二进制的前导的零 (15 分) 


import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        Integer a = scanner.nextInt();
        if (a == 0){
            System.out.println(32);
        }else {
            String s = Integer.toBinaryString(a);
            System.out.println(32 - s.length());
        }
    }
}

Integer类中有静态方法:

toBinaryString(int i):返回int变量的二进制表示的字符串。
toHexString(int i):返回int变量的16进制字符串。
toOctalString(int i):返回int变量的8进制表示字符串。

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
7-1 jmu-java-01入门-第一个ptaJava程序是一个关于学习Java编程的题目。在这个题目,我们需要编写一个简单的Java程序。 这个程序要求实现一个功能,即能够输出"Hello Java!"这句话。实现这个功能很简单,只需要使用Java输出语句System.out.println("Hello Java!");就可以了。 编写这个程序的步骤如下: 1. 打开编程软件,比如Eclipse或者IntelliJ IDEA等。创建一个Java项目。 2. 在项目的src目录下创建一个新的Java类。 3. 在这个Java,编写主函数public static void main(String[] args)。 4. 在主函数,添加一行代码System.out.println("Hello Java!");,这行代码的作用是输出"Hello Java!"这句话。 5. 运行这个程序,可以看到控制台输出了"Hello Java!"这句话。 这个题目的目的是帮助我们熟悉Java的编程环境,并且学会使用基本的输出语句。虽然这个程序很简单,但是它对于初学者来说是一个很好的入门练习。 在学习编程的过程,我们会遇到很多类似的题目,通过完成这些题目,我们可以不断熟悉各种编程语言的语法和特性,提高我们的编程能力。而且,通过编写简单的程序,我们还能够培养我们的逻辑思维能力和解决问题的能力。 总之,7-1 jmu-java-01入门-第一个ptaJava程序是一个帮助我们学习Java编程的题目,通过完成这个题目,我们可以学会使用Java输出语句,熟悉Java的编程环境,提高我们的编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值