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从begin到end(包括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,然后就可以得到π的值。
注意
- 请使用jdk库中的Random对象来生成随机数。
- 使用Math类中的sqrt与pow函数来计算开根号与平方值。
- 让点(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);
}
}