2023面向对象程序设计《实验4》-实用编程

T1.

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

输入格式:

从键盘中输入学生人数n

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

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

...

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

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

输出格式:

显示及格总人数

显示不及格总人数

输入样例:

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

3
100
30
60

输出样例:

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

2
1

输入样例:

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

2
200
69
30

输出样例:

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

200invalid!
1
1
import java.util.Scanner;

public class Main{
	public static void main(String[] args) throws ScoreException{
		Scanner sc = new Scanner(System.in);
		int m = 0;
		int n = sc.nextInt();
		int a = 0;
		int b = 0;
		for(int i = 0;i < n;i++){
			try{
				m = sc.nextInt();
				if(m < 0 || m > 100)
					throw new ScoreException("invalid!");
				else{
					if(m>=60)
						a++;
					else
						b++;
				}
			}
			catch(ScoreException e){
				System.out.println(m + e.toString());
				i = i - 1;
			}
		}
		System.out.println(a);
		System.out.println(b);
	}
}
class ScoreException extends Exception{
	String message;
	public ScoreException(String message){
		this.message = message;
	}
	public String toString(){
		return this.message;
	}
}

 T2.

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

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

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

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

输入样例:

10
5
8
1000
800
900

输出样例:

567
0330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533
import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int begin=in.nextInt();
		int end=in.nextInt();
		int n2=in.nextInt();
		int begin2=in.nextInt();
		int end2=in.nextInt();
		StringBuilder name1=new StringBuilder();
		StringBuilder name2=new StringBuilder();
		for(int i=0;i<n;i++) {
			name1.append(i);
		}
		for (int i=0;i<n2;i++) {
			name2.append(i);
		}
		System.out.println(name1.substring(begin, end));
		System.out.println(name2.substring(begin2, end2));
	}

}

T3.

设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。

输入格式:

首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。

输出格式:

完成查找替换后的完整字符串

输入样例:

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

Although I am without you, I will always be ou you
ou
with

输出样例:

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

Although I am without you, I will always be with you
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int i;
        String str= in.nextLine();
        String str1= in.nextLine();
        String str2= in.nextLine();
        String[] s = str.split(" ");
        for(i=0;i<s.length;i++){
            if(s[i].equals(str1)){
                s[i]=str2;
            }
        }for(i=0;i<s.length-1;i++){
            System.out.printf("%s ",s[i]);
        }
        System.out.printf("%s",s[i]);
    }
}

 T4.

尝试使用蒙特卡罗法计算圆周率(π)的值。原理如下:

以原点(0, 0)作为圆心,半径为1画一个圆。该圆的外切正方形,边长为2。

现往该正方形内随机投点,数量足够多的情况下,落入圆内的点与落入整个
外切正方形的点的数量比值大概为: 4∗r2π∗r2​,然后就可以得到π的值。

注意

  1. 请使用jdk库中的Random对象来生成随机数。
  2. 使用Math类中的sqrt与pow函数来计算开根号与平方值。
  3. 让点(x,y)投在整个矩形中,x与y的取值范围为(-1≤x<1, -1≤y<1)。

输入格式:

随机数种子seed 投点个数n
注意:seed为long型,n为int型

输出格式:

计算出的值圆周率的值

输入样例:

2 100000

输出样例:

3.14684
import java.util.Random;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        long seed=in.nextLong();
        int n=in.nextInt();
        Random random=new Random(seed);
        int num=0;
        for(int i=0;i<n;i++){
            double x = random.nextDouble() *2 - 1;
            double y = random.nextDouble() *2 - 1;
            if (Math.pow(x, 2) + Math.pow(y, 2) <= 1) {
                num++;
            }
        }System.out.println(4 * ((double) num / n));
    }
}

 T5.

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数

输入格式:

通过键盘输入一行字符(任意字符)

输出格式:

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数

输入样例:

rwrwewre2345asdJSJQI%^&(&   *&sdf YY( 2342-k'

输出样例:

字母个数:22
数字个数:8
空格个数:5
其他字符个数:10
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String s=in.nextLine();
        int Letter=0,Num=0,Space=0,Character=0;
        char[] ch = s.toCharArray();
        for(int i=0;i<s.length();i++){
            ch[i] = s.charAt(i);
            if (63 <= ch[i] && ch[i] <= 90 || 97 <= ch[i] && ch[i] <= 122)
                Letter++;
            else if (48 <= ch[i] && ch[i] <= 57)
                Num++;
            else if (ch[i] == 32)
                Space++;
            else
                Character++;
        }
        System.out.println("字母个数:"+Letter);
        System.out.println("数字个数:"+Num);
        System.out.println("空格个数:"+Space);
        System.out.println("其他字符个数:"+Character);
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值