欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基础语法题目练习

程序员文章站 2022-06-28 20:20:21
11...

PTA交题时注意:不要输入package名字;类名必须为Main

1.输入

import java.util.Scanner;
Scanner scanner=new Scanner(System.in); //设置输入
int n=scanner.nextInt(); //输入一个int整形
String s=scanner.next(); //输入一个字符串(不包含空格,遇见空格/回车就停)
String s=scanner.nextLine(); //输入一个字符串(包含空格,遇见回车就停)
//java中没有获取单个字符的办法
//如果在输入一个整型之后紧接着输入一个nextLine
//注意要在中间再加一个scanner.nextLine() 类似C++里面的的getchar()

更快一点的
Scanner scanner = new Scanner (new BufferedInputStream(System.in));

2.字符串遍历

int sum=0;
for (int i = 0; i < s.length(); i++) {
	sum+=s.charAt(i)-'0'; //通过s.charAt(i)获取每一个字符 字符->数字与C一样
}

//字符数组的遍历
char[] c=new char[105];
sum=0;
for (int i = 0; i < c.length; i++) {   //获取字符数组长度不需要括号
	sum+=c[i]-'0'; //通过下标获取每一个字符 字符->数字与C一样
}

3.字符串与整型的相互转换

1.整型转字符串
(1)String s=String.valueOf(n);2)String s=Integer.toString(n);3)String s=n+""; //极其方便
2.字符串转整型
(1int t=Integer.parseInt(s);2)如果是字符串遍历过程中单个字符的话  s.charAt(i)-'0' 即可。不存在+'0'

4.数组的定义

int[] i=new int[5];
int[] i={0,1};
char[] s=new char[5];
char[] s={'a','b'};
string[] str=new string[15];
string[] str={"aaa","bbb","ccc"};

5.Java中的 “结构体”


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

class node{  //用类来进行封装
	String name;
	String id;
	int score;
}

class px implements Comparator<node>{ //自定义类,通过Comparator设置排序规则
	
	public int compare(node a,node b) {
		return b.score-a.score;  //b-a 代表降序, a-b代表升序
	}
}

public class test1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		node[] q=new node[1005];
		for(int i=0;i<n;i++) {
			q[i]=new node(); //类对象必须初始化!!,分配内存空间
			q[i].name=sc.next();
			q[i].id=sc.next();
			q[i].score=sc.nextInt();
		}
		Arrays.sort(q,0,n,new px()); //利用Arrays进行排序
		//第2 3 参数为指定范围,第4个参数为排序规则
		System.out.printf("%s %s\n", q[0].name,q[0].id);
		System.out.printf("%s %s\n", q[n-1].name,q[n-1].id);
		
	}
}

6.ArrayList(对应C++的vector)

//定义
ArrayList<Integer> a = new ArrayList<Integer>();
//添加元素
a.add(1); //在末尾插入1   
a.add(1,3); //在下标为1插入3
//删除元素
a.remove(1);  //删除下标为1的元素
a.remove(Integer.valueOf(1));  //删除值为1的元素
//修改元素
a.set(0,1);   //将下标为0的元素的值改成1
//访问元素
a.get(1) //访问下标为1的元素
//遍历
for (int i = 0; i < a.size(); i++) 
{
     System.out.println(sites.get(i));
}
//排序
Collections.sort(a); //运用Collections类
还可以加入排序规则
Collections.sort(a,new px()); //在自定义类px中设定规则

7.ArrayDeque(对应C++的queue)

ArrayDeque<Integer> queue = new ArrayDeque<Integer>();
queue.offer(1);//成功返回true,失败返回false,别写成push!!
queue.offer(2);
queue.offer(3);
System.out.println(queue.peek());//类似于C++中queue的front(),返回第一个元素
while (!queue.isEmpty()) {
    System.out.println(queue.pop());//跟C++中的queue()一样可以删除第一个元素,但是会返回它,不像C++中是void的
}

8.ArrayDeque(也对应C++的stack,在Java中queue与stack对应一个类)

ArrayDeque<Integer> stack = new ArrayDeque<Integer>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack.peek());//类似于C++中stack的top(),返回栈顶元素
while(!stack.isEmpty()){
    System.out.println(stack.pop());//跟C++中的pop()一样可以弹出栈顶元素,但是会返回它,不像C++中是void的
}

9.HashMap(对应C++的map)

//这里使用的是HashMap,是无序的,对应标准C++的unordered_map
//若要使用有序的,则用TreeMap
//TreeMap<Integer, Integer> m = new TreeMap<Integer, Integer>();
//定义
HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
//添加元素
m.put(1, 111);
//访问元素
m.get(1);
//根据key删除元素
m.remove(1);
m.clear();
//计算大小
m.size();
//用for-each遍历 输出 key 和 value
for (Integer i : m.keySet()) 
{
     System.out.println("key: " + i + " value: " + m.get(i));
}
//用迭代器遍历
Iterator<Entry<Integer, Integer>> it = m.entrySet().iterator();
while(it.hasNext())
{
   Entry<Integer, Integer> e = it.next();
   System.out.println(e.getKey() + " " + e.getValue());
}

10.HashSet(对应C++的set)

HashSet<String> sites = new HashSet<String>();
//添加元素
sites.add("Taobao");
//判断元素是否存在
sites.contains("Taobao") //返回true false
//删除元素
sites.remove("Taobao");
sites.clear();
//计算大小
sites.size();
//迭代
for (String i : sites) {
    System.out.println(i);
}
//若要有序则可使用TreeSet

11.在main函数中调用的函数必须为static定义的函数,运用的全局变量也必须是static定义的。如下素数线性筛函数:

package myjava;
import java.util.Scanner;
public class Main {

	 static int[] prime=new int[1000005];
	 static boolean[] flag=new boolean[1000005];
	 static int tot=0;
	 public static void getprime()
	 {
		for(int i=2;i<1000000;i++)
		{
			if(!flag[i])
			{
				prime[++tot]=i;
			}
			for(int j=1;j<=tot;j++)
			{
				if(i*prime[j]>1000000)
					break;
				flag[i*prime[j]]=true;
				if(i%prime[j]==0)
					break;
			}
		}
	 }
	 public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		getprime();
		for(int i=1;i<=tot;i++)
		{
			System.out.println(prime[i]);	
		}
	 }
}

12.String

(1)字符串分割函数
String s=sc.nextLine();
String[] str=s.split(" "); //将输入的字符串s按照空格分开存储

本文地址:https://blog.csdn.net/henulmh/article/details/112638446