Java期末考试 练习题精选精讲

1.定义一个名字为Main的类,在屏幕上输出以下信息:

Hello Java!

Programming is fun!

public class Main{
    public static void main(String[] args)//主代码进入{
        System.out.println("Hello Java!");//输出
        System.out.println("Programming is fun!");
    }
}

2.输入一个非负整数n,计算n!

import java.util.Scanner;
public class Main{
    public static int f(int c){//定义f()的函数
		if(c == 0){
			return 1;
		}
		else{
			return f(c-1)*c;//递归
		}
	
		
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);//接受输入
		int i = sc.nextInt();//输入
		int a = f(i);
		System.out.println(a);//输出
		}
}

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

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();//接受输入
		

		int min = 1;
		int max = 0;

		for(int i = 0; i < N - 1; i++) {
			min *= 10;
		}
		max = min * 10 - 1;
		
		for(int i = min; i <= max; i++) {
			if(i == sum(i,N)) {
				System.out.println(i);
			}
		}		
	}
	
	//sum函数 返回一个数的各位数幂运算之和
	public static int sum(int data,int N) {
		int res = 0;//各位数幂运算之和
		
		for(int j = 0; j < N; j++) {
			int t = data % 10;//幂运算
			for(int k = 0; k < N - 1; k++) {
				t *= (data % 10);
			}
			res += t;
			data /= 10;
		}
		
		return res;
	}
}

4.

编写一个圆环类Ring的Java程序。

a定义圆环类的2个数据成员,分别是内半径innerRadius,外半径outerRadius,这些属性通过get和set方法进行封装。

b 定义圆环类有参构造方法Ring(int innerRadius,int outerRadius),在有参构造方法中加入System.out.println("constructor");

c完成无参构造方法Ring(),要求在无参构造方法中使用this调用有参构造方法给两个半径赋值(外半径赋值3,内半径赋值1)

d 圆环类中定义 public int getArea()方法可以返回其面积。面积求出后强制转换为整型值返回,π使用Math.PI表示。


在Main类中先生成一个圆环类对象,这个圆环的两个半径通过键盘读入,调用求面积方法求出面积后,输出面积。

然后再次定义一个圆环对象,调用无参构造方法,调用求面积方法求出面积后,输出面积。

输入格式:

输入在一行中先给出内半径,再给出外半径。

输出格式:

在一行中输出圆环的面积。

import java.awt.*;
import java.util.*;
import javax.swing.JPanel;
 
import java.io.*;
 
class Ring {//Ring 类
	public double innerRadius;
	public double outerRadius;
 
	public Ring() {
		this(1, 3);//访问调用指定的有参构造,用来区分成员变量和局部变量(重名问题)

              
	}
 
	public Ring(double innerRadius, double outerRadius) {// 两参构造
		this.innerRadius = innerRadius;
		this.outerRadius = outerRadius;
		System.out.println("constructor");
	}
 
	public double getInnerRadius() {//无参构造
		return innerRadius;
	}
 
	public void setInnerRadius(double innerRadius) {
		this.innerRadius = innerRadius;
	}
 
	public double getOuterRadius() {
		return outerRadius;
	}
 
	public void setOuterRadius(double outerRadius) {
		this.outerRadius = outerRadius;
	}
 
	public int getArea() {//getArea 方法
		return (int) (Math.PI * (this.outerRadius * this.outerRadius - this.innerRadius * this.innerRadius));
	}
 
}
 
public class Main {//主
 
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Ring r1 = new Ring(scan.nextDouble(), scan.nextDouble());
		System.out.println(r1.getArea());
		Ring r2 = new Ring();
		System.out.println(r2.getArea());
	}
}
 

5.

    1. 定义一个圆柱类Cylinder
    2. 里面包含私有属性 private int radius(半径),height(高)
    3. 为属性完成其setter getter方法
    4. 完成带参构造方法Cylinder(int radius,height),该方法中包含一句System.out.println("Constructor with para");
    5. 完成无参构造方法Cylinder(),在无参构造方法中调用有参构造方法,为半径和高赋值为2,1,该方法包含一句System.out.println("Constructor no para");
    6. 完成求体积方法 public int getVolumn(){} 求圆柱体积,π使用Math.PI
  • 定义测试类Main,在main方法中,按照顺序要求完成下列操作
  • 从键盘接收两个数,第一个为半径,第二个为高,并利用刚才输出两个数创建圆柱体对象c1,求c1的体积并输出。
  • 使用无参构造方法 创建第二个圆柱体对象c2,求c2的体积并输出。

输入格式:

在一行中输入半径 和高。

输出格式:

对每一个圆柱体输出它的体积

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int radius = sc.nextInt();
        int height = sc.nextInt();
        Cylinder cylinder = new Cylinder(radius,height);
        System.out.println(cylinder.getVolumn());
        Cylinder cylinder1 = new Cylinder();
        System.out.println(cylinder1.getVolumn());
    }
}
class Cylinder{
    private int radius;
    private int height;
 
    public Cylinder() {
        this(2,1);
        System.out.println("Constructor no para");
    }
 
    public Cylinder(int radius, int height) {
        this.radius = radius;
        this.height = height;
        System.out.println("Constructor with para");
    }
    public int getVolumn(){
        return (int)(Math.PI*Math.pow(radius,2)*height);
    }
}

6.设计Book类,要求:1)Book类的成员属性包括:书名name(String类型)、出版日期publishDate(Date类型)、定价price(double型);2)为Book对象提供按出版日期、价格排序的两种方式,且能够满足测试程序代码中的输入输出要求(注意代码注释中的说明)。其中,类BookComparatorByPrice的排序功能是:将一组Book对象按照价格升序排序,如果价格相同,则按照书名字母顺序排列;类BookComparatorByPubDate的排序功能是:将一组Book对象按照出版日期降序排序。裁判样例忽略

class Book{//类
    private String name;
    private Date publishDate;
    private double price;

    public Book(String name, Date publishDate, double price) {
        this.name = name;//访问属性,也可以用set
        this.publishDate = publishDate;
        this.price = price;
    }

    public String getName() {//私有类可以用
        return name;
    }

    public Date getPublishDate() {
        return publishDate;
    }

    public double getPrice() {
        return price;
    }

    public String toString(){
        return "书名:" + name + ",定价:" + price;
    }
}

class BookComparatorByPrice implements Comparator {//接口实现了排序,排序是已经定义好的接口
    public int compare(Object o1, Object o2) {//比较
        Book b1 = (Book)o1;
        Book b2 = (Book)o2;

        if( b1.getPrice() == b2.getPrice() ){
            return b1.getName().compareTo(b2.getName());
        }
        else{
           return b1.getPrice() < b2.getPrice() ? -1 :  1;
        }
    }
}

class BookComparatorByPubDate implements Comparator{
    public int compare(Object o1, Object o2) {
        Book b1 = (Book)o1;
        Book b2 = (Book)o2;

        return b2.getPublishDate().compareTo(b1.getPublishDate());
    }
}

8.

给定英文句子,编写方法void wordPositions(String sentence),该方法中计算sentence中的每个单词在句子中的起始位置和单词长度并输出。假设句子中只包含英文字母和空格,且单词不重复。

输入格式:

句子

输出格式:

每个单词在句子中的起始位置和单词长度

import java.util.Scanner;
import java.util.regex.*;;
public class Main {
	//子字符串modelStr在字符串str中第count次出现时的下标
	static int getFromIndex(String str, String modelStr, Integer count) {
		
	        Matcher slashMatcher = Pattern.compile(modelStr).matcher(str);
	        int index = 0;
			while(slashMatcher.find()) {//找到,准备输出
		    index++;
		    if(index == count){
		       break;
		    }
		}
	      	return slashMatcher.start();
	}
	public static void wordPositions(String sentence) {//函数
		
        String[] strings = sentence.split(" ");//分割句子
        int[] num = new int[100];、、新建数组
        for(int i = 1;i < strings.length;i++) {
        	int cnt = 0;
        	for(int j = 0;j < i;j++) {
        		if(strings[i].equals(strings[j]))几位数
        			cnt++;
        	}
        	num[i] = cnt+1;
        }
        num[0] = 1;
 
        int i = 0;
 
        while(i < strings.length) {
   System.out.println(strings[i]+": "+getFromIndex(sentence,strings[i],num[i])+", "+strings[i].length());
 
            i++;
        }
 
     }
 
	public static void main(String[] args) {//主函数
		// TODO Auto-generated method stub
 
        Scanner s1 = new Scanner (System.in);
 
        String string = s1.nextLine();
 
        wordPositions(string);
 
 
	}
 
}
 

9

图书价格汇总

输入格式:

假设某图书馆中图书记录的格式为“Java程序设计: 34;Web程序设计: 56;JSP程序设计:20”(每本书的价格是整数,每本书的价格与下一本书的名字之间有一个中文;)。

输出格式:

编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。

import java.util.ArrayList;
import java.util.Scanner;

public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int total=0;//新建价格
String str=sc.nextLine();//接受多个数字输入
String[] sList=str.split(";");以;为标准分割,命名为s
ArrayList<String> strList=new ArrayList<>();建立列表
for (String s:sList){strList.add(s);}截取到新建列表里
for (String s:strList){System.out.println(s);输出s
  total += Integer.parseInt(s.substring(s.indexOf(":") + 1).trim());
        }//截取查找到价格后进行类型转换,相加
System.out.println("总价格为"+total);}}


10

从键盘接收N个英文字符串(其中不同的字符串数量大于10),从头开始取5个不同的字符串放入一个集合S1,然后接着取5个不同的字符串放入另一个集合S2,按照字母顺序输出S1和S2的并集中的每个字符串(字符串区分大小写)

输入格式:

一行以空格分开的英文字符串(不同的字符串数量大于10)。

输出格式:

按照字母顺序(先比较字符串首字母,首字母相同的比较字符串第二个字母,以此类推)输出的S1和S2并集的字符串。

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner (System.in);
String s=sc.nextLine();
String[] ns=s.split(" ");//分割成独立的单词
Set<String> s1=new TreeSet<String>();//建立集合1,2
Set<String> s2=new TreeSet<String>();

for(int i=0;i<ns.length;i++)//放入字符串
{if(s1.size()<5){
s1.add(ns[i]);
continue;}
if(s2.size()<5){
s2.add(ns[i]);
continue;
}}
s1.addAll(s2);
Iterator it=s1.iterator();//迭代器访问s1集合
while(it.hasNext())//执行迭代器必备
System.out.println(it.next());}}

10

1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以“exit”结束。每行文本的格式为:学号,姓名,课程名,成绩。程序能够读取学生及其成绩,将具有相同学号的学生及其成绩读取到一个Student(学生类)类对象的列表(List)stuList中;
2)程序在读取完学生及其成绩的数据后,能够将stuList中的学生按照平均成绩降序排列(如果平均成绩相同,学号数字小的排在前面), 并输出排序后的学生学号、姓名和成绩

输入格式:

多行表示的学生成绩,每一行是一个学生的姓名、学号、课程名、成绩(整数)。不同行可以是同一名学生(学号相同的为同一名学生)不同课程的成绩。

输出格式:

按照学生平均成绩降序排序(平均成绩相同的学号小的在前面)的学生排名(具体输出格式参照样例)。

import java.util.*;
class Student implements Comparable<Student>{//接口比较,学生泛型
    private String name,id;
    private int subject=1;
    private int score;
    private double sum=0;
    Student(){}//空参构造函数
    Student(String name,String id,int score){
             this.name=name;
             this.id=id;
             this.score=score;
    }//作用等于set
    public String getid(){
        return this.id;
    }
    public void subjectadd() {
        this.subject++;
    }
    public void scoreadd(int score){
        this.score=this.score+score;
    }
    public String getname() {
        return this.name;
    }
    public void sum() {
        this.sum=this.score/this.subject;
    }
  

    public int compareTo(Student o1){//比较
               Student one = (Student) o1;
               if(this.sum-one.sum!=0)
               return (int)(one.sum-this.sum);
               else
               return this.id.compareTo(one.id);
    }
}
public class Main{//主函数
    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            List<Student> list =new ArrayList<Student>();//建列表
            int i,flag=0;
            String k;
            String[] and =new String[5];//

            while(sc.hasNext())
            {
                k=sc.next();
                and=k.split(",");
                if(k.compareTo("exit")==0)
                break;
                for(i=0;i<list.size();i++)
                {
                    if(list.get(i).getid().compareTo(and[1])==0)
                    {
                        flag=1;
                        break;
                    }
                }
                if(flag==1)
                {
                    list.get(i).subjectadd();
                    list.get(i).scoreadd(Integer.parseInt(and[3]));
                }
                else
                {
                    list.add(new Student(and[0],and[1],Integer.parseInt(and[3])));
                }
                flag=0;
            }
            for(i=0;i<list.size();i++)
            list.get(i).sum();
            Collections.sort(list);
            for(i=0;i<list.size();i++)
            {
                
                System.out.println("No"+(i+1)+":"+list.get(i).getid()+","+list.get(i).getname());
                //System.out.println(list.get(i).rescore());
            }

    }
}

11

求整数集合A与整数集合B的交集。

输入格式:

输入有三行:

第一行是A和B的元素个数m和n(m,n <=100);

第二行是集合A的m个元素;

第三行是集合A的n个元素。

输出格式:

输出交集的所有元素(按照在A集合出现的顺序输出,最后一个输出后面没有空格)。
若交集为空,输出“NULL”。

import java.util.*;

public class Main {
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);	
    	int m = sc.nextInt();
    	int n = sc.nextInt(); //m,n 接受
    	List<Integer> s1 = new ArrayList<>();
    	List<Integer> s2 = new ArrayList<>();//集合准备
    	for(int i = 0; i < m; i++)
    		s1.add(sc.nextInt());
    	for(int i = 0; i < n; i++)
    		s2.add(sc.nextInt());//集合到位能
    	boolean f = false;
    	boolean first = true;
    	for(int x : s1) {
    		if(s2.contains(x)) {
    			f = true;
    			if(first) {System.out.print(x); first = false;}
    			else System.out.print(" " + x);
    		}
    	}
    	if(!f) System.out.println("NULL");//f是假,s2不包含
    	else System.out.println("");
    }
}

另一种做法(因为boolean那里太绕了

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class Main{
	 public static void main(String[] args){
		 	Scanner sc = new Scanner(System.in);
	   		int m=sc.nextInt();
	   		int n=sc.nextInt();
	   		int[] a=new int[m];
	   		int[] b=new int[n];
	   		int flag=0;
	   		for(int i=0;i<m;i++) {
	   			a[i]=sc.nextInt();
	   		}
	   		for(int i=0;i<n;i++) {
	   			b[i]=sc.nextInt();
	   		}
	   		for(int i=0;i<m;i++) {
	   			for(int j=0;j<n;j++) {
	   				if(a[i]==b[j]) {//有一样的
	   					flag++;
	   					if(flag==1) {
	   						System.out.print(a[i]);
	   					}
	   					else System.out.print(" "+a[i]);
	   				}
	   			}
	   		}
	   		if(flag==0)
	   			System.out.println("NULL");
	 }
}

12

输入3个整数n、begin、end
首先,使用如下代码:

for(int i=0;i<n;i++)

将从0到n-1的数字拼接为字符串str。如,n=12,则拼接出来的字符串为01234567891011

最后截取字符串str从beginend(包括begin,但不包括end)之间的字符串,并输出。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int n, begin, end;
            n = scanner.nextInt();
            begin = scanner.nextInt();
            end = scanner.nextInt();
            StringBuilder str = new StringBuilder("");//建立可修改的字符串
            for (int i = 0; i < n; i++) {
                str.append(i);//填入
            }
            System.out.println(str.substring(begin,end));//截取
        }

    }
}

13

1.定义抽象类Shape
属性:不可变静态常量double PI,值为3.14
抽象方法:public double getPerimeter(),public double getArea()

2.RectangleCircle类均继承自Shape类。
Rectangle类(属性:int width,length)、Circle类(属性:int radius)。
带参构造方法为Rectangle(int width,int length),Circle(int radius)
toString方法(Eclipse自动生成)

3.编写double sumAllArea方法计算并返回传入的形状数组中所有对象的面积和
double sumAllPerimeter方法计算并返回传入的形状数组中所有对象的周长和

4.main方法
4.1 输入整型值n,然后建立n个不同的形状。如果输入rect,则依次输入宽、长。如果输入cir,则输入半径。
4.2 然后输出所有的形状的周长之和,面积之和。并将所有的形状信息以样例的格式输出。 提示:使用Arrays.toString
4.3 最后输出每个形状的类型与父类型.使用类似shape.getClass() //获得类型, shape.getClass().getSuperclass() //获得父类型;

注意:处理输入的时候使用混合使用nextIntnextLine需注意行尾回车换行问题。

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

public class Main {

    public static void main (String [] args) {

        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        //存储每个形状的实例,用于之后的输出各个形状的信息
        Shape [] shapes = new Shape[n];

        for (int i = 0; i < n; i++) {

            String str = scanner.next();

            if ("rect".equals(str)) {

                Rectangle rectangle = new Rectangle(scanner.nextInt(), scanner.nextInt());
                shapes[i] = rectangle;
                Shape.sumAllArea(rectangle);
                Shape.sumAllPerimeter(rectangle);
            } else if ("cir".equals(str)) {

                Circle circle = new Circle(scanner.nextInt());
                shapes[i] = circle;
                Shape.sumAllArea(circle);
                Shape.sumAllPerimeter(circle);
            }
        }
        scanner.close();

        //输出所有形状的周长之和
        System.out.println(Shape.sumAllPerimeter());
        //输出所有形状的面积之和
        System.out.println(Shape.sumAllArea());
        //输出所有形状的信息
        System.out.println(Arrays.toString(shapes));

        //输出每个形状的类型及其父类型
        for (int i = 0; i < n; i++) {
            System.out.print(shapes[i].getClass() + ",");
            System.out.println(shapes[i].getClass().getSuperclass());
        }
    }
}


abstract class Shape {

    final static double PI = 3.14;

    /**
     * 存所有形状的面积之和
     * */
    private static double area = 0.0;

    /**
     * 存所有形状的周长之和
     * */
    private static double perimeter = 0.0;

    /**
     * 返回该形状的周长
     * */
    public abstract double getPerimeter();
    /**
     * 返回该形状的面积
     * */
    public abstract double getArea();

    public abstract String toString();


    static double sumAllArea() {
        return area;
    }

    static void sumAllArea(Rectangle rect) {
        area += rect.getArea();
    }

    static void sumAllArea(Circle cir) {
        area += cir.getArea();
    }


    static double sumAllPerimeter() {
        return perimeter;
    }

    static void sumAllPerimeter(Rectangle rect) {
        perimeter += rect.getPerimeter();
    }

    static void sumAllPerimeter(Circle cir) {
        perimeter += cir.getPerimeter();
    }


}


class Rectangle extends Shape {

    private int width;
    private int length;

    Rectangle(int width, int length) {
        this.width = width;
        this.length = length;
    }


    public double getPerimeter() {
        return 2 * (width + length);
    }


    public double getArea() {
        return width * length;
    }


    public String toString() {//字符串形式
        return "Rectangle [width=" + width + ", length=" + length + "]";
    }

}


class Circle extends Shape {//继承

    private int radius;

    Circle (int radius) {
        this.radius = radius;
    }


    public double getPerimeter() {
        return 2 * PI * radius;
    }


    public double getArea() {
        return  PI * radius * radius;
    }


    public String toString() {
        return "Circle [radius=" + radius + "]";
    }
}

13

有若干大整数,需要对其进行求和操作。

输入格式

每行输入一个字符串代表一个大整数,连续输入若干行,当某行字符为eE时退出。

import java.util.*;
import java.util.BigInteger;
public class Main{
   public static void main(String[] args) {
        Scanner s=new Scanner (System.in);
            String bignum=s.nextLine();
    BigInteger sum= new BigInteger("0");
        while(true){
            if(bignum.equals(e)||bignum.equals(E))
                break;
            
            BigInteger bignum = new BigInteger(bignum);
            sum=sum.add(bignum);
            String bignum=s.nextLine();
            
        }
        System.out.println(sum);
    }
}

14

要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:

在一行中给出序列中整数个数N(0<N≤1000),依次给出N个整数,每个整数占一行。

输出格式:

在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        HashMap<Integer,Integer> m = new HashMap<>();
        int n = cin.nextInt();
        for(int i = 0;i < n;i++){
            int x = cin.nextInt();
            if(m.containsKey(x)){//有包含
                m.put(x,m.get(x)+1);
            }
            else{
                m.put(x,1);
            }
        }
        int k = 0,sum = 0;
        for(Map.Entry<Integer,Integer> entry: m.entrySet()){
            int x = entry.getKey();
            int y = entry.getValue();
            if(y > sum){
                k = x;
                sum = y;
            }
        }
        System.out.println(k+" "+sum);
    }
}

14

该程序包含

Person类

属性:String name,boolean gender String birthdate。

构造方法:

  • 无参构造方法(初始化名字为空字符串,gender为false)

  • 两个参数的构造方法(name,gender)

  • 三个参数的构造方法(name,gender,birthdate)

方法:getter/setter方法。

自定义接口Judgeable

方法:boolean judge(String)

main类

静态方法:int countPerson(List,Judgeable),功能为调用List集合中所有元素的judge方法,并统计其中返回true的元素个数。

main方法:

定义一个Person类集合,输入个数n,在下面依次输入n行的name,gender,biryhDate值生成person对象并添加进集合。

判断集合中name长度为5的数的个数,并输出,具体格式见输出样例。

判断集合中name长度为7的数的个数,并输出,具体格式见输出样例。

判断集合中name为空的个数,并输出,具体格式见输出样例。

输入格式:

输入一个整数number

根据number,输入number行的name,gender,birthDate

输出格式:

name长度为5的名字的个数

name长度为7的名字的个数

name为null的个数

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Person {
    String name;
    boolean gender;
    String birthdate;

    Person(){//初始化
        this.name = "null";
        this.birthdate = "";
        gender = false;
    }

    Person(String name, boolean gender){
        this.name = name;
        this.gender = gender;
    }

    Person(String name, boolean gender, String birthdate){
        this.name = name;
        this.gender = gender;
        this.birthdate = birthdate;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setBirthdate(String birthdate) {
        this.birthdate = birthdate;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }

    public String getName() {
        return name;
    }

    public String getBirthdate() {
        return birthdate;
    }

    public boolean isGender() {
        return gender;
    }
}

interface Judgeable{//自定义接口
    boolean judge(String s);
    static int countPerson(List<Person> personList, Judgeable judger){
        return 0;
    }
}

//在这里给出Judgeable接口的定义,入参为String,返回boolean。

public class Main {

    public static int countPerson(List<Person> personList, Judgeable judger) {
        int n = 0;
        for (Person person : personList) {
            if (judger.judge(person.getName()))
                n++;
        }
        return n;
    }


    public static void main(String[] args) {//主函数
        Scanner sc = new Scanner(System.in);
        List<Person> personList = new ArrayList<Person>();
        String name;
        boolean gender;
        String  birthDate;

        //在这里输入个数
        int num = sc.nextInt();

        //循环创建person对象存入personList最后
        for(int i = 1; i <= num; i++){
            name = sc.next();
            gender = sc.next()=="true"?true:false;
            birthDate = sc.next();
            Person p = new Person(name, gender, birthDate);
            personList.add(p);
        }
        //注意:当name输入为null时,将其置为空

        int nameLength5 = countPerson(personList, new Judgeable() {
            //Judgeable的实现代码

            @Override
            public boolean judge(String s) {
                return s.length() == 5;
            }
        });

        System.out.println("Number of person with nameLength == 5:"+nameLength5);
        int nameLength7 = countPerson(personList, new Judgeable() {
            //Judgeable的实现代码

 
            public boolean judge(String s) {
                return s.length() == 7;
            }
        });

        System.out.println("Number of person with nameLength == 7:"+nameLength7);
        int nameisnull = countPerson(personList, new Judgeable() {
            //Judgeable的实现代码


            public boolean judge(String s) {
                return s.equals("null");
            }
        });

        System.out.println("Number of person with null name:"+nameisnull);
    }
}

15

输入一篇英文文章,碰到"!!!!!"的时候停止,输出文章中出现的不重复单词的个数(注意:单词不区分大小写,如:The和the为一个单词)

输入格式:

一篇英文文章,以"!!!!!"结尾

输出格式:

不重复单词的个数

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
 
public class Main{
    public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    Set <String> set=new HashSet <String>();
        while(true){
        String  aString=in.next();
        if(aString.equals("!!!!!")){
            break;
        }
set.add(aString.toLowerCase());//转小写判断
    	}
    System.out.println(set.size());
}}


 

16

要求从键盘读取输入的整数成绩,由百分制转换成五分制输出结果。[0,60)不及格,[60,70)及格,[70,80)中,[80,90)良,[90,100]优,其余显示为:成绩不正确。

输入格式:

输入一个整数形式的百分制成绩。

输出格式:

输出相应的五分制成绩。


import java.util.Scanner;
public class Main {
  
  public static void main(String[] args) {
	  Scanner input=new Scanner(System.in);
	  int source=input.nextInt();
	  if(0<=source&&source<=100) {
	  switch(source/10) {
	  case 6:
		  System.out.print("及格");
		  break;
	  case 7:
		  System.out.print("中");
		  break;
	  case 8:
		  System.out.print("良");
		  break;
	  case 9:
		  System.out.print("优");
		  break;
	  case 10:
		  System.out.print("优");
		  break;
	 default:
		 System.out.print("不及格");
	  }}else System.out.print("成绩不正确");
	  
	  
  } 

}

17

提示:在Java中利用Math类的方法——**Math.sqrt()**求平方根。

java.lang.Math.sqrt(double a) 返回一个double值的正平方根。

输入格式:

输入有若干行,每行有2个数值,分别表示直角三角形的两个直角边长度,用空格分隔。

输出格式:

对应每行输入数据,输出直角三角形的斜边长度,结果保留2位小数。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int i=1;
        while(scanner.hasNext()) {
            double a=scanner.nextDouble();
            double b=scanner.nextDouble();
            System.out.printf("%.2f\n", Math.sqrt(a*a+b*b));
        }
    }
}

18

public class Main {
    public static void main(String[] args) {
        for(int i=100;i<1000;i++){
            int a=i/100;
            int b=i/10%10;
            int c=i%10;
            if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==i){
                System.out.println(i);
            }
        }
    }
}

19

大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。

输入格式:

输入一个长度不超过 100 且不包括空格的字符串。

输出格式:

将该字符串中的所有小写字母变成大写字母并输出。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char[] array=str.toCharArray();//字符串转字符数组
        for (int i = 0; i < array.length; i++) {
            if (array[i] >='a' && array[i] <= 'z') {
                array[i] = (char) (array[i] - ('a' - 'A'));//别忘了转换数据类型
            }
        }
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
        }
    }
}

20

实验要求:设计类Rectangle,定义必要的属性和方法,要求包含两个构造方法,至少实现求面积、求周长并进行测试。

输入格式:

输入两个边长。

输出格式:

对每一组输入,在一行中输出面积的值和周长的值。

import java.util.Scanner;
class Rectangle{
    private int width;
    private int length;
    public Rectangle(){//无参函数初始化
        width=1;
        length=1;
    }
    public Rectangle(int w,int l){
        width=w;
        length=l;
    }
    public int area(){
        int area=width*length;
        return area;
    }
    public int perimeter(){
        int perimeter=2*width+2*length;
        return perimeter;
    }
}
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        Rectangle a1=new Rectangle(in.nextInt(),in.nextInt());
        System.out.printf("%d %d",a1.area(),a1.perimeter());
    }
}

21

利用之前完成的类Rectangle,编写子类Square,实现正方形的求面积和求周长功能,并进行测试。

输入格式:

输入整数边长。

输出格式:

对每一组输入,在一行中输出面积和周长的值。

import java.util.Scanner;
class Rectangle{
    private int width;
    private int length;
    public Rectangle(){
        width=1;
        length=1;
    }
    public Rectangle(int w,int l){
        width=w;
        length=l;
    }
    public int area(){
        int area=width*length;
        return area;
    }
    public int perimeter(){
        int perimeter=2*width+2*length;
        return perimeter;
    }
}
class Square extends Rectangle{//子类
    private int b;
    public Square(){
        b=1;
    }
    public Square(int bian){
        b=bian;
    }
    public int area(){
        int area=b*b;
        return area;
    }
    public int perimeter(){
        int perimeter=4*b;
        return perimeter;
    }
}
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        Square c=new Square(in.nextInt());
        System.out.printf("%d %d",c.area(),c.perimeter());
    }
}

22

从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。

(1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome

(2)如果用户名正确,密码不正确,输出:Mismatch

(3)其他情况下,输出:NotExist

要输出的信息,建议从题目中复制,确保精确匹配。

输入格式:

用空格分隔开的两个字符串。

输出格式:

首字母大写的一个单词或词组。

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
        	  Scanner input=new Scanner(System.in);
		String str = "SwpuIot 123456";
		String[] strs = str.split(" ");
		
		Scanner sc = new Scanner(System.in);
		String s1 = sc.next();
		String s2 = sc.next();//分割完了,当两个不同的数看
		sc.close();
		
		if(strs[0].equals(s1) && strs[1].equals(s2)) {//三种情况
			System.out.println("Welcome");
		}else if(strs[0].equals(s1) && !strs[1].equals(s2)) {
			System.out.println("Mismatch");
		}else {
			System.out.println("NotExist");
		}
		
	}
}

23

编写一个程序,统计一个子串在整串中出现的次数,例如子串“nba”在整串“nbaabcdefnbaxyzmba”中出现的次数为2。要求使用String或者StringBuffer类的常用方法来计算出现的次数。

请注意:含有main方法的类(class)的名字必须命名为Main,否则调试不成功。

输入格式:

输入两行,每行输入一个字符串。第一个当作整串,第二个当作子串。每个字符串的中间不要出现换行符(Enter)、空格、制表符(Tab)。

输出格式:

输出子串在整串中出现的次数,结果是一个大于或等于0的整数。

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        String a=in.next();
        String b=in.next();
        int index=0;
        int count=0;
        while(true)
        {
            index=a.indexOf(b);//寻找
            if(index!=-1)
            {
                count++;//出现
                a=a.substring(index+b.length());//去除已查找片段
            }
            else
            {
                break;
            }
        }
        System.out.println(count);
        
    }
}

24

找出10个整数中的最大值、最小值、偶数的个数、偶数的平均值。(使用Scanner类从键盘输入数据。)

请注意:含有main方法的类(class)的名字必须命名为Main,否则调试不成功。

输入格式:

在一行中输入10个整数,中间用空格隔开。

输出格式:

分四行分别输出最大值、最小值、偶数的个数、偶数的平均值。

import java.util.Arrays;
import java.util.Scanner;
class Main{
    public static void main(String []args)
    {
        Scanner in=new Scanner(System.in);
        int a[]=new int[10];
        if(in.hasNext())
        {
            for(int i=0;i<10;i++)
            {
                a[i]=in.nextInt();
            }
        }
       Arrays.sort(a);
        System.out.println("最大值是"+a[9]);
        System.out.println("最小值是"+a[0]);
        int b[]=new int[10];
        int count=0;
        int sum=0;
        int count1=0;
        for(int i=0;i<a.length;i++)
        {
            if(a[i]%2==0)
            {
                count++;
                sum+=a[i];
            }
        }
   
        System.out.println("偶数的个数是"+count);
        if(count!=0)
        {
        System.out.printf("偶数的平均值是%.1f",(sum*0.1)/(count*0.1));
        }
        else
        {
            System.out.println("偶数的平均值是0.0");
        }
        }
}

25

对10个整数进行排序。(使用Scanner类从键盘输入数据。)

请注意:含有main方法的类(class)的名字必须命名为Main,否则调试不成功。

输入格式:

在一行中输入10个整数,中间以空格隔开。

输出格式:

按从小到大的顺序输出这10个整数,中间以一个空格隔开(最末尾不要空格)。

import java.util.Scanner;
import java.util.Arrays;
class Main{
    public static void main(String []args)
    {
        Scanner in=new Scanner(System.in);
        int a[]=new int[10];
        if(in.hasNext())
        {
            for(int i=0;i<10;i++)
            {
                a[i]=in.nextInt();
            }
            
        }
        Arrays.sort(a);//真正有用的排序
        for(int i=0;i<a.length;i++)//两种情况
        {
            if(i==0)
            {
            System.out.print(a[0]);
            }
            else{
            System.out.print(" "+a[i]);
            }
        }
    }
}

26

学术会议地点统计问题

秘书统计张教授【以后简称 z 】和王教授【以后简称 w 】上一年度参加学术会议的情况,教授详细行程清单如下:

z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3

w:hn 7,xm 6,bj 4,gz 6,wh 4

现在秘书需要完成以下统计工作。
找出两位教授共同去过的城市,并找出住宿天数长的教授,按照如下格式输出:

z:bj 6,w:wh 4

请同学们编写代码帮助搞定。

import java.awt.*;
import java.util.*;
import javax.swing.JPanel;

import java.io.*;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String sz = scan.nextLine();
		String sw = scan.nextLine();
		TreeMap<String, Integer> mapz = new TreeMap<>();
		TreeMap<String, Integer> mapw = new TreeMap<>();
		TreeMap<String, Integer> mapzz = new TreeMap<>();
		TreeMap<String, Integer> mapww = new TreeMap<>();
		sz = sz.substring(2);//返回字符串的子字符串
		sw = sw.substring(2);
		String[] szz = sz.split(",");//分开
		String[] sww = sw.split(",");
		for (String str : szz) {//对于z教授
			String[] strr = str.split(" ");
			if (mapz.containsKey(strr[0])) {//哈希找映射
				mapz.put(strr[0], mapz.get(strr[0]) + Integer.parseInt(strr[1]));
			} else {
				mapz.put(strr[0], Integer.parseInt(strr[1]));
			}

		}

		for (String str : sww) {
			String[] strr = str.split(" ");
			if (mapw.containsKey(strr[0])) {
				mapw.put(strr[0], mapw.get(strr[0]) + Integer.parseInt(strr[1]));
			} else {
				mapw.put(strr[0], Integer.parseInt(strr[1]));
			}
		}
		
		boolean fg = false;
		for (Map.Entry<String, Integer> entry : mapz.entrySet()) {
			if (mapw.containsKey(entry.getKey())) {
				fg = true;
				if (entry.getValue() >= mapw.get(entry.getKey())) {
					mapzz.put(entry.getKey(), entry.getValue());
				} else {
					mapww.put(entry.getKey(), mapw.get(entry.getKey()));
				}
			}
		}
		
		int i = 0;
		int j = 0;
		if (fg) {
			if (mapzz.size() != 0) {
				for (Map.Entry<String, Integer> entry : mapzz.entrySet()) {
					System.out.print("z:");
					System.out.print(entry.getKey() + " " + entry.getValue());
					i++;
					if (i != mapzz.size()) {
						System.out.print(",");
					}
				}
			}
			if (mapzz.size() != 0 && mapww.size() != 0) {
				System.out.print(",");
			}
			if (mapww.size() != 0) {
				for (Map.Entry<String, Integer> entry : mapww.entrySet()) {
					System.out.print("w:");
					System.out.print(entry.getKey() + " " + entry.getValue());
					j++;
					if (j != mapww.size()) {
						System.out.print(",");
					}
				}
			}
		} else {
			System.out.println("none");
		}
	}
}

27

编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。

输入格式:

从键盘中输入学生人数n

从键盘中输入第1个学生的成绩

从键盘中输入第2个学生的成绩

...

从键盘中输入第n个学生的成绩

(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)

输出格式:

显示及格总人数

显示不及格总人数

import java.util.Scanner;
 
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int k1 = 0, k2 = 0;
		for (int i = 0; i < n; i++) {
			int x = in.nextInt();
			if (x < 0 || x > 100) {
				i--;
				System.out.println(x + "invalid!");
			} else if (x > 0 && x < 60)
				k1++;
			else
				k2++;

		}
		System.out.println(k2);
		System.out.println(k1);
 
	}
}
 
class err extends Exception {
 
}//继承不重写

26

构造计算机类,其中包含其配置信息:处理器、主板、内存、显示器、硬盘等设备,各个设备均有型号(字符串),特别的,处理器有主频(小数)和内核数(整数)、显示器有尺寸(整型)、内存和硬盘有容量数据(GB为单位)。请你尝试构造合适的类和类的关系来表示计算机,并为该计算机类添加计算价格(各设备价格之和)、打印配置信息等方法。重写相关类的equals方法,使得两个配置完全相同的计算机为相同的计算机。重写相关类的toString函数,打印计算机的配置信息。
在main函数中

提示:
为计算机类和各个组成配件都构造类,分别重写toString和equals方法
在计算机类中调用各个配件的equals和toString方法
回车用\n
小数用String.format("%.1f",1.234)

输入格式:

两个计算机对象,包含
CPU:型号、主频、内核
主板:型号
内存:容量
显示器:尺寸
硬盘:容量

输出格式:

两个对象是否相等
两个对象的配置信息

import java.util.Scanner;

class Disk{
	String model ;
	int size;

	public Disk(){
		this.init();
	}

	public Disk(String model , int size ){
		this.model = model;
		this.size = size;
	}

	private void init(){
		this.model = "";
		this.size = 0;
	}

	public String printInfo(){
		return "Harddisk:\nModel: " + this.model +
			   "\nSize: " + this.size + "\n" ;
	}
}

class Display{
	String model ;
	int size;

	public Display(){
		this.init();
	}

	public Display(String model , int size){
		this.model = model;
		this.size = size;
	}

	private void init(){
		this.model = "";
		this.size = 0;
	}

	public String printInfo(){
		return "Screen:\nModel: " + this.model +
			   "\nSize: " + this.size + "\n" ;
	}
}

class RAM{
	String model ;
	int size;

	public RAM(){
		this.init();
	}

	public RAM(String model,int size ){
		this.model = model ;
		this.size = size;
	}

	private void init(){
		this.model = "";
		this.size = 0;
	}

	public String printInfo(){
		return "Memory:\nModel: " + this.model +
			   "\nSize: " + this.size + "\n" ;
	}

}

class MotherBoard{
	String model ;

	public MotherBoard(){
		this.init();
	}
	public MotherBoard(String model){
		this.model = model;
	}

	private void init(){
		this.model = "";
	}

	public String printInfo(){
		return "Mainboard:\nModel: " + this.model + "\n" ;
	}

}

class CPU{
	String model ;
	double clockSpeed;
	int coreCount;

	public CPU(){
		this.init();
	}

	public CPU(String model, double cS,int cC){
		this.model = model;
		this.clockSpeed = cS;
		this.coreCount = cC;
	}

	private void init(){
		this.model = "";
		this.clockSpeed = 0.0;
		this.coreCount = 0;
	}
	public String printInfo(){
		return "CPU:\nModel: " + this.model +
			"\nFrequency: " + this.clockSpeed +
			"\nNumber of Cores: " + this.coreCount + "\n" ;
	}
}

class Computer{
	String info ;
	CPU cpu;
	MotherBoard motherboard;
	RAM ram;
	Display display;
	Disk disk;


	
	public Computer(Scanner in){
		

		this.info = "";
		this.cpu = new CPU(in.next(), in.nextDouble(), in.nextInt());
		this.motherboard = new MotherBoard(in.next() );
		this.ram = new RAM(in.next(), in.nextInt());
		this.display = new Display(in.next(), in.nextInt() );
		this.disk = new Disk(in.next(), in.nextInt() );


	}

	public String toString(){
		return  cpu.printInfo() +
				motherboard.printInfo() +
				ram.printInfo() +
				display.printInfo() +
				disk.printInfo();
	}



	public boolean equals(Object ob){
		if( (ob == null) || !(ob instanceof Computer) ){
			return false;		
		}
		return ( this.toString().equals(ob.toString()) );
	}
}

public class Main{
	public static void main(String []arg){

		Scanner in = new Scanner(System.in);
		Computer c1 = new Computer(in),
				 c2 = new Computer(in);


		System.out.println( c1.equals(c2) );	
		System.out.println("Computer1:");	 
		System.out.print( c1.toString());
		System.out.println("Computer2:");	 
		System.out.print( c2.toString() );
	}
}

27

构建一个书类Book,包括名称(字符串),价格(整型),作者(字符串,多个作者当做一个字符串处理),版本号(整型),提供带参数的构造函数Book(String name, int price, String author, int edition),提供该类的toString()和equals()方法,toString方法返回所有成员属性的值的字符串形式,形如“name: xxx, price: xxx, author: xxx, edition: xxx”,当两个Book对象的名称(不关心大小写,无空格)、作者(不关心大小写,无空格)、版本号相同时,认为两者表示同一本书。
Main函数中,读入两本书,输出他们是否相等,打印两本书的信息。

输入描述:

两本书信息

输出描述:

两本书的打印信息
两本书是否相等

裁判测试程序样例:略

 class Book {
    String name;
    int price;
    String author;
    int edition;

    public Book(String name, int price, String author, int edition) {
        this.name = name;
        this.price = price;
        this.author = author;
        this.edition = edition;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getEdition() {
        return edition;
    }

    public void setEdition(int edition) {
        this.edition = edition;
    }

    public String toString() {
        return "name: " + this.name +
                ", price: " + this.price +
                ", author: " + this.author +
                ", edition: " + this.edition;
    }

    public boolean equals(Object o) {
        //if (this == o) return true;
        if (o == null) return false;
        else {
            boolean result = false;
            if (o instanceof Book) {
                Book book = (Book) o;
                //当两个Book对象的名称(不关心大小写,无空格)、作者(不关心大小写,无空格)、版本号相同时,认为两者表示同一本书。注意此处无关价格
                if (book.name.equalsIgnoreCase(this.name)&&book.author.equalsIgnoreCase(this.author)&&book.edition==this.edition)
                    result = true;
            }
            return result;
        }
    }
}





28

给定两个整型数组A和B,将A的元素复制到B中,使得两个数组完全相同。再将B数组从小到大排列,将两数组的同一位置上对应的元素进行比较,统计出A中大于B的元素个数,等于B中元素的个数,小于B中的元素的个数。
提示:可用Arrays.sort排序

输入格式:

数组A的个数
数组A元素

输出格式:

A大于B的个数
A等于B的个数
A小于B的个数

import java.util.*;
 
public class Main{
 
    public static void main(String[] args) {
 
    Scanner scan = new Scanner(System.in);
 
    int num = scan.nextInt();
 
    int BigNum = 0;
 
    int EqualNum = 0;
 
    int SmallNum = 0;
 
    int ArrayA[] = new int[num];
 
    int ArrayB[] = new int[num];
 
    for(int i = 0;i < num; i++) {
 
        ArrayA[i] = scan.nextInt();
 
  
 
    }
 
    System.arraycopy(ArrayA, 0, ArrayB, 0, num);
 
    Arrays.sort(ArrayB);
 
    for(int i = 0; i < num;i++) {
 
        if(ArrayA[i] > ArrayB[i]) {
 
            BigNum ++;
 
        }
 
        else if(ArrayA[i] == ArrayB[i]) {
 
            EqualNum ++;
 
        }
 
        else if(ArrayA[i] < ArrayB[i]) {
 
            SmallNum ++;
 
        }
 
    }
 
    System.out.println(BigNum);
 
    System.out.println(EqualNum);
 
    System.out.println(SmallNum);
 
 }
 
}

28

数组元素交换,要求:(1)最大的元素与第一个元素交换(2)最小的元素与最后一个元素交换。

输入格式:

输入一行字符串(由不同的整数组成,以空格分开)

输出格式:

首先以数组形式输出初始字符串(一行一个数字),然后以数组形式输出完成交换后的字符串(一行一个数字)。

class SwapTest{
	public static <T extends Comparable<T>>void swap(T[] temp){//泛型+接口
		T min=temp[0];
		T max=temp[0];
		for(int i=0;i<temp.length;i++){
			if(min.compareTo(temp[i])>0){
				min=temp[i];
			}
			if(max.compareTo(temp[i])<0){
				max=temp[i];
			}
		}
		swapFirst(max,temp);
		swapLast(min,temp);
	}
	public static <T>void swapFirst(T t,T[] temp){
		for(int i=0;i<temp.length;i++){
			if(temp[i]==t){
				T data=temp[i];
				temp[i]=temp[0];
				temp[0]=data;
			}
		}
		
	}
	public static <T>void swapLast(T t,T[] temp){
		for(int i=0;i<temp.length;i++){
			if(temp[i]==t){
				T data=temp[i];
				temp[i]=temp[temp.length-1];
				temp[temp.length-1]=data;
			}
		}
		
	}
}
public class Swap {
	public static void main(String[] args) {
		Integer[] data=new Integer[]{1,2,3,6,3,10,70,4,9};
		SwapTest.swap(data);
		for(int x=0;x<data.length;x++){
			System.out.println(data[x]);
		}
	}
}

29

1.本题目要求得的两个向量的和,每一个向量通过一个一维数组表示,具体要求为:

1在Main类中.创建一个方法,方法功能为求两个一维数组之和得到求和数组并返回。方法声明为:

public static int[] add(int arr[],int []arr2)

2.在main方法中创建两个一维数组,一维数组的长度通过键盘得到,数组的元素通过键盘输入。

3.调用add方法得到两个一维数组之和,并输出这个一维数组的值。

输入格式:

第一行输入数组的元素个数
第二行输入第一个数组的各个元素 中间以空格隔开
第三行输入第二个数组的各个元素 中间以空格隔开

输出格式:

输出求和数组的各个元素,每行输出一个元素。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {//主函数
        Scanner scanner = new Scanner(System.in);
        int len;//数组长度
        int sum[];//求和后的数组
        len = scanner.nextInt();
        int arr[] = new int[len];
        int arr2[] = new int[len];
        for(int i=0;i<len;i++){
            arr[i] = scanner.nextInt();
        }
        for(int i=0;i<len;i++){
            arr2[i] = scanner.nextInt();
        }
        //求和
        sum = add(arr,arr2);
        //输出
        for(int i=0;i<len;i++){
            System.out.println(sum[i]);
        }
    }
    public static int[] add(int arr[],int arr2[]){//自定义add函数
        int []tmp = new int [arr.length];
        for(int i=0;i<arr.length;i++){//求和
            tmp[i] = arr[i] + arr2[i];
        }
        return tmp;
    }
}

30

本题运行时要求键盘输入10个人员的信息(每一个人信息包括:姓名,性别,年龄,民族),要求同学实现一个函数,统计民族是“汉族”的人数。

函数接口定义:

 

public static int numofHan(String data[])

其中 data[] 是传入的参数。 data[]中的每一个元素都是一个完整的人员信息字符串,该字符串由“姓名,性别,年龄,民族”,各项之间用英文半角的逗号分隔。函数须返回 值是汉族的人数。

public static int numofHan(String data[]){
	String str = "汉族";
	int ans = 0;
	for(String s: data){
		if(s.indexOf(str, s.lastIndexOf(",")) != -1) {//从最后一个查找
			++ans;
		}
	}
	return ans;
}

31

编写程序,验证一个字符串是否为回文串:是否从前读它和从后读它都是一样的。例如,mom,dad是回文串。该程序接收用户输入的字符串,判断是否为回文串,然后将判断的结果输出。

输入格式:

输入在一行中给出一个字符串。

输出格式:

如果输入的字符串为回文串,则输出yes;否则输出no。

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner cin=new Scanner(System.in);
        String a = cin.nextLine();
        char[] str = a.toCharArray();
		int x=1;
		int len=a.length();
		for(int i=0;i<len/2;i++) {
			if(str[i]!=str[len-i-1]) {//正着数和倒着数
				x=0;

			}
		}
		if(x==1)
			System.out.println("yes");
		else
			System.out.println("no");
	}
}

32

给定一行字符串,去除其中的数字字符,并逆序输出。

输入格式:

输入一行字符串。

输出格式:

去除字符串中的数字字符,并逆序输出

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String newStr = line.replaceAll("\\d+", "");//使用给定的参数替换字符串匹配的正则表达式的子串
StringBuffer buffer=new StringBuffer(newStr);//可对数组修改
System.out.println(buffer.reverse());//逆转
}
}

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值