PTA 实验一:JAVA语言基础刷题(一)

目录

7-1 Hello World

7-2 jmu-Java-01入门-第一个PTA上Java程序

7-3 求一个三位正整数各位数字之和

7-4 二进制的前导的零

7-5 JAVA-水仙花数

7-6 sdut-sel-for-1 RDMP音乐播放器(I)(分支、循环)

7-7 java编程判断斐波那契数是质数


7-1 Hello World

写java代码,没有输入,屏幕输出“Hello World”

输入格式:

输出格式:

Hello World

输出样例:

Hello World

 我的代码:

public class Main
{
	public static void main(String[] args)
	{
	System.out.println("Hello World");
	}
}

7-2 jmu-Java-01入门-第一个PTA上Java程序

本题目要求读入若干对整数a和b,然后输出它们的和。

输入格式:

在一行中给出一对整数a和b。
以下输入样例只有两对,实际测试数据可能有多对值。

输出格式:

对每一组输入,如果a的绝对值>1000,输出|a|>1000,否则输出a+b的值。

输入样例:

18 -299
1001 -9
-1001 8

输出样例:

-281
|a|>1000
|a|>1000

我的代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextInt()){//采用hasNext循环
            String str = scanner.nextLine();
            String [] arr = str.split("\\s+");
            int num1 = Integer.parseInt(arr[0]);
            int num2 = Integer.parseInt(arr[1]);
            if(Math.abs(num1) > 1000){
                System.out.println("|a|>1000");
            }else{
                System.out.println(num1 + num2);
            }
        }
    }
}

 知识点1:java的输入语法:Scanner in=new Scanner(System.in);

输入double

import java.util.Scanner;//输入头文件

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        double d=in.nextDouble();
        System.out.println(d);
    }
}

 输入整型

import java.util.Scanner;//输入头文件

public class Main {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();   //调用in的nextInt函数来读入整型
        int b = in.nextInt();
        System.out.print(a+b+" ");
    }
}

注意:in.nextInt() 函数只能接受 int 型,不能输入double或者long等其他类型的数字。

对于其他输入的函数同样,nextDouble(), nextLong(), nextShort(), nextByte(), 都只能输入对应类型的数据,输入其他类型会报错。

 知识点2:java的\\s+的使用

正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f \n \r \t \v]

  • \f -> 匹配一个换页
  • \n -> 匹配一个换行符
  • \r -> 匹配一个回车符
  • \t -> 匹配一个制表符
  • \v -> 匹配一个垂直制表符
方法1:String[] c = s.split(" ");
方法2:String[] c = s.split("\\s+");
假如我们输入的是:1 2 3   12  11这样的数据,换言之就是数字之间有多个空格的时候,方法1将会报错,而方法2正常排序运行。因为方法1只能匹配一个空格,而方法2可以匹配多个空格。

 知识点3:java的split的使用——拆分字符串

 知识点4:java的Integer.parseInt()和String.valueOf()

Integer.parseInt(string s)可以将提取好的“数字”组成的字符转化为int 型数据。
类似的,可以用,Byte,Short,Long,Float,Double类调用相应的类方法。
String.valueOf()可以将上述的数据类型转化为String对象

 知识点5:JavaScript之Math数学运算相关函数:abs(x)—— 返回数的绝对值

JavaScript之Math数学运算相关函数_川少博客的博客-CSDN博客


7-3 求一个三位正整数各位数字之和

求一个三位正整数各位数字之和

输入格式:

输入一个三位的正整数

输出格式:

输出百十个位上各位数字的和

输入样例:

678

输出样例:

21

我的代码:

import java.util.*;
public class Main
{
    public static void main(String arg[])
    {
        Scanner input=new Scanner(System.in);
        int 三位数=input.nextInt();
        int 个位,十位,百位;
        个位=三位数%10;
        十位=三位数%100/10;
        百位=三位数/100;
        System.out.println(个位+十位+百位);
    }
}

7-4 二进制的前导的零

计算机内部用二进制来表达所有的值。一个十进制的数字,比如24,在一个32位的计算机内部被表达为00000000000000000000000000011000。可以看到,从左边数过来,在第一个1之前,有27个0。我们把这些0称作前导的零。

现在,你的任务是写一个程序,输入一个整数,输出在32位表达下它前导的零的个数。

输入格式:

一个整数,在32位的整数可以表达的范围内。

输出格式:

一个整数,表达输入被表达为一个32位的二进制数时,在第一个1之前的0的数量。

输入样例:

256

输出样例:

23

我的代码:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
            int a = in.nextInt();
            int result = 32;
            if (a > 0) {
                while (a > 0){
                    result--;
                    a /= 2;
                }
            }
            else if (a < 0)
                result = 0;
            System.out.println(result);
    }

}

7-5 JAVA-水仙花数

水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 要求编写程序,计算所有N位水仙花数。

输入格式:

输入一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

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

3

输出样例:

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

153
370
371
407

我的代码:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n= sc.nextInt();
		sc.close();
		int lb = (int)(Math.pow(10, n-1));
		int ub = (int)(Math.pow(10, n));
		int bites[] = new int[10];
		for(int i=0;i<bites.length;i++) {
			bites[i]=(int)Math.pow(i, n);
		}
		for(int i=lb;i<ub;i++) {
			int num =i;
			int result=0;
			while(num!=0) {
				result += bites[num%10];
				num /= 10;
			}
			if(result==i)
				System.out.println(i);
		}
	}

}

 pow(x,y) 返回 x 的 y 次幂;


7-6 sdut-sel-for-1 RDMP音乐播放器(I)(分支、循环)

注意:这是在不使用数组的情况下完成的。
RDMP音乐播放器将存储5首歌曲,它们的名称将永远是“A”,“B”,“C”,“D”和“E”。RDMP有3个按钮,用户可以按下这些按钮来重新排列播放列表并播放歌曲。
最初,RDMP播放列表是“A, B, C, D, E”。3个控制按钮做以下工作:
•按钮1:将播放列表的第一首歌曲移动到播放列表的末尾。例如:“A, B, C, D, E”会变成“B, C, D, E, A”。
•按钮2:将播放列表的最后一首歌移动到播放列表的开始。例如,“A, B, C, D, E”会变成“E, A, B, C, D”。
•按钮3:交换播放列表的前两首歌。例如,“A, B, C, D, E”会变成“B, A, C, D, E”。1.
你需要编写一个程序来模拟一个可以按下5次按钮的RD音乐播放器。

输入格式:

输入1到3之间的5个数字,代表要采取的行动。

输出格式:

输出播放列表的正确顺序。
歌曲名称中间用逗号作分隔,最后一首歌名称之后没有逗号。
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner y = new Scanner(System.in);
 
        int m, x, n,i;
        char a[] = {'A', 'B', 'C', 'D', 'E'};
        char str ;
        for (m = 1; m <= 5; m++) {
            x = y.nextInt();
            if (x == 1) {
                str = a[0];
                for (n = 0; n <= 3; n++) {
                    a[n] = a[n + 1];
 
                }
                a[4] = str;
            }
            else if(x == 2) {
                str = a[4];
                for (n = 3; n >= 0; n--) {
                    a[n + 1] = a[n];
                }
                a[0] = str;
            }
            else if (x == 3){
                str = a[0];
                a[0] = a[1];
                a[1] = str;
            }
        }
        for(i = 0;i <= 3;i++){
            System.out.printf(a[i]+",");
        }
        System.out.println(a[4]);
    }
}

7-7 java编程判断斐波那契数是质数

斐波那契数列(FibonacciSequence),又称黄金分割数列。因数学家列昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34 ⋯

在数学上,斐波那契数列被以如下的递推形式定义:

F(1)=1,F(2)=1
F(n)=F(n−1)+F(n−2),(n≥3,n∈N)

素数也称为质数,是指在大于 1 的整数中,只能被 1 和其自身整除的数,2 是最小的质数。

我们想要知道斐波那契数列的第 n 项是否是一个素数,请你编写程序完成判断。

输入格式:

一行,一个整数 n(1≤n≤50)

输出格式:

一行,一个单词,如果 F(n) 是素数,输出true,反之输出false

输入样例1:

1

输出样例1:

false

输入样例2:

2

输出样例2:

false

输入样例3:

3

输出样例3:

true
//package shiyan01.demo01;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        boolean flag = true;
        long a,b,x,count;
        a = 1;
        b = 1;
        x = 1;
        count = 0;
        for (int i = 0; i < n - 2; i++) {
            x = a + b;
            a = b;
            b = x;
        }
        //System.out.println(x);
        double x1 = x;
        for (int i = 2; i < Math.pow(x,0.5); i++) {
            if(x%i==0) {
                flag = false ;
                break;
            }
        }
        if(x==1) {
            flag = false;
        }
        if(flag) {
            System.out.println(true);
        } else {
            System.out.println(false);
        }
    }
}

我们下个文章见~