R7-8 求矩阵主对角线元素的和 (10 分)

R7-1 计算正五边形的面积和周长 (10 分)
从键盘输入一个数作为正五边形的边长,计算并输出该正五边形的周长和面积。

计算正五边形的面积公式为: S=a
​2
​​ ×√
​25+10×√
​5

​​

​​ /4

输入格式:
输入正五边形的边长。例如:

5

输出格式:
输出正五边形的面积和周长。第一行输出面积,第二行输出周长。例如:

43.0119

25

输入样例:
16.8
输出样例:
485.5875
84

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	double a=in.nextDouble();
	System.out.printf("%.4f",a*a*Math.sqrt(25+10*Math.sqrt(5))/4);
	System.out.println();
	
	DecimalFormat d=new DecimalFormat("#.####");
	System.out.println(d.format(a*5));

	}

}

R7-1 创建一个倒数计数线程 (10 分)
创建一个倒数计数线程。要求:1.该线程使用实现Runnable接口的写法;2.程序该线程每隔0.5秒打印输出一次倒数数值(数值为上一次数值减1)。

输入格式:
N(键盘输入一个整数)

输出格式:
每隔0.5秒打印输出一次剩余数

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

6
5
4
3
2
1
0

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		CountDown c = new CountDown();
		Thread t = new Thread(c);
		t.start();
	}
}
class CountDown implements Runnable{
	public void run()
	{
		Scanner reader = new Scanner(System.in);
		int n=reader.nextInt();
		for(;n>=0;n--)
		{
			System.out.println(n);
				try {
					Thread.sleep(500);
				} catch (InterruptedException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
		}
	}
}

R7-2 程序改错题4 (10 分)
程序改错题。请修改下列代码,使程序能够输出正确的结果。

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Thread t = new Thread(new RunHandler());
t.run();
}
}

class RunHandler {
public void run() {
Scanner in = new Scanner(System.in);
int x = in.nextInt();
System.out.println(“run”);
}
}
输入格式:
输入一个整数x。

输出格式:
输出x行,每行一个字符串“run”。

输入样例:
4
输出样例:
run
run
run
run

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Thread t = new Thread(new RunHandler());
		t.start();
	}
}

class RunHandler implements Runnable  {
	public void run() {
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		for(int i=0;i<x;i++) {
			System.out.println("run");
		}
	}
}

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

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

输出格式:
完成查找替换后的完整字符串

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

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) {
		 String statement;
		    Scanner sc =new Scanner(System.in);
		    statement=sc.nextLine();
		    String word1=sc.next();
		    String word2=sc.next();//用word2替换word1

		    String words[]=statement.split(" ");
		   /* for(int i=0;i<words.length;i++)
		    	System.out.print(words[i]+"\t");*/
		    for(int i=0;i<words.length;i++) {//将句子分割成单词
		    	if(word1.equals(words[i])) {
		    		words[i]=word2;
		    	}
		    }
		   StringBuffer stb=new StringBuffer();
		   String sta=null;
		   for(int i=0;i<words.length;i++) {//数组转换为句子
			   if(i==words.length-1)stb.append(words[i]);
			   else	stb.append(words[i]+" ");
		   }
		   sta=stb.toString();
		   System.out.println(sta);
		    sc.close();
	}

}

R7-3 图书价格汇总 (10 分)
图书价格汇总

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

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

输入样例:
Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20
输出样例:
Java程序设计:34
Web程序设计: 56
JSP程序设计:20
总价格为110

import java.util.Scanner;

public class Main {
	
	public static void main(String args[]) {
		Scanner sc=new Scanner(System.in);
		String str=sc.nextLine();
		String bookInfo[]=str.split(";");
		Main main=new Main();
		int sum=0;
		
		for(int i=0;i<bookInfo.length;i++)			//输出分割后的书本信息
			System.out.println(bookInfo[i]);
		
		for(int i=0;i<bookInfo.length;i++) {
			String bn= (bookInfo[i].split(":"))[0];//以:分割
			Integer pr=Integer.parseInt((bookInfo[i].split(":"))[1].trim());
			sum+=pr.intValue();
			
		}
		System.out.println("总价格为"+sum);
	}

}

R7-4 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 (10 分)
统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数

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

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

输入样例:
rwrwewre2345asdJSJQI%^&(& *&sdf YY( 2342-k’
输出样例:
字母个数:22
数字个数:8
空格个数:5
其他字符个数:10

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		sc.close();
		
		char[] chars = str.toCharArray();
		int letter=0,num=0,blank=0,other=0;
		for(int i=0;i<chars.length;i++) {
			if((chars[i]>='A' && chars[i]<='Z') || (chars[i]>='a' && chars[i]<='z')){
				letter++;
			}else if(chars[i]>=47 && chars[i]<=57) {
				num++;
			}else if(chars[i]==32) {
				blank++;
			}else {
				other++;
			}
		}
		
		System.out.println("字母个数:"+letter);
		System.out.println("数字个数:"+num);
		System.out.println("空格个数:"+blank);
		System.out.println("其他字符个数:"+other);
	}
}

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

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

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

输入样例:
2 9 0 10
输出样例:
2
9
0
10
10
9
2
0


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

public class Main {
    public static void main(String[] args) {
        //获取用户的输入,并解析为一个数组
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        //分割用户输入得到一个字符串数组
        String[] strs = str.split("\\s+");
        // 遍历这个字符串数组,将每个字符串解析为一个Integer,并装到Integer数组中
        int[] nums = new int[strs.length];

        try {
            for (int i = 0; i < strs.length; i++) {
                nums[i] = Integer.parseInt(strs[i]);
            }
        }catch (NumberFormatException e){
            //System.out.println("你输入有误,请输入数字,其它字符不支持");
        }
        int[] numStart = (int[])Arrays.copyOf(nums,nums.length);
        int max_index = 0;
        int min_index = 0;
        int max =nums[0];
        int min =nums[0];
        int bottle=0;
        // 遍历数组,获取最大数和最小数对应的index值
        for (int i = 0; i < nums.length; i++) {
            if(max<nums[i]){
                max_index=i;
                max = nums[i];
            }
            if(min>nums[i]){
                min_index=i;
                min=nums[i];
            }
        }
        // 捣鼓瓶子,倒来倒去
        bottle=nums[0];
        nums[0]=nums[max_index];
        nums[max_index]=bottle;
        bottle=nums[nums.length-1];
        nums[nums.length-1]=nums[min_index];
        nums[min_index]=bottle;
        // 打印结果
        for(int i=0;i<nums.length;i++) {
            System.out.println(numStart[i]);
        }
        for(int i=0;i<nums.length;i++) {
            System.out.println(nums[i]);
        }

    }
}

R7-6 判断登录信息–Java字符串比较 (10 分)
从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。

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

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

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

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

输入格式:
用空格分隔开的两个字符串。

输出格式:
首字母大写的一个单词或词组。

输入样例:
SwpuIot 123456
输出样例:
Welcome

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		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");
		}
		
	}
}

R7-7 伪随机数 (10 分)
在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long。Random的对象有两种构建方式:带种子和不带种子。不带种子的方式将会返回随机的数字,每次运行结果不一样。无论程序运行多少次,带种子方式构建的Random对象会返回一样的结果。

请编写程序,使用第一种方式构建Random对象,并完成下面输入输出要求。

输入格式:
在一行中输入3个不超过10000的正整数n,m,k。

输出格式:
在一行中输出以k为种子建立的Random对象产生的第n个0到m-1之间的伪随机数。

输入样例:
10 100 1000
输出样例:
50


import java.util.*;
public class Main {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();
        List<Integer> ss = new ArrayList<Integer>();
        //Set<Integer> ss = new HashSet<Integer>();
        Random rand = new Random(k);
        for(int i = 0;i < n;i++)
        {
        	ss.add(rand.nextInt(m));
        	if(i==n-1)
        		System.out.println(ss.get(i));
        }
        
	}
 
}

R7-1 jmu-Java-06异常-01-常见异常 (10 分)
自己编码以产生常见异常。

###main方法:

事先定义好一个大小为5的数组。

根据屏幕输入产生相应异常

提示:可以使用System.out.println(e)打印异常对象的信息,其中e为捕获到的异常对象。

**输入说明: **

arr 代表产生访问数组是产生的异常。然后输入下标,如果抛出ArrayIndexOutOfBoundsException异常则显示,如果不抛出异常则不显示。
null,产生NullPointerException
cast,尝试将String对象强制转化为Integer对象,产生ClassCastException。
num,然后输入字符,转化为Integer,如果抛出NumberFormatException异常则显示。
其他,结束程序。
输入样例:
arr 4
null
cast
num 8
arr 7
num a
other
输出样例:
java.lang.NullPointerException
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
java.lang.ArrayIndexOutOfBoundsException: 7
java.lang.NumberFormatException: For input string: “a”

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int []arr = new int [5];
        Scanner input = new Scanner(System.in);
        while (input.hasNext()){
            String  a = input.next();
            if (a.equals("arr")){
                int b = input.nextInt();
                try {
                    int d = arr[b];
                }catch (Exception e){
                    System.out.println(e.toString());
                }
            }else if (a.equals("num")){
                String  b = input.next();
                try{
                    int d = Integer.parseInt(b);
                }catch (Exception e){
                    System.out.println(e.toString());
                }
            }else if (a.equals("cast")){
                try {
                    Object str = new String("cc");
                    System.out.println((Integer)(str));
                }catch (Exception e){
                    System.out.println(e.toString());
                }
            }else if (a.equals("null")){
                try {
                    String t = null;
                    int l = t.length();
                }catch (Exception e){
                    System.out.println(e.toString());
                }
            }else {
                System.exit(0);
            }

        }
    }
}

R7-2 jmu-Java-06异常-02-使用异常机制处理异常输入 (10 分)
使用异常处理输入机制,让程序变得更健壮。

###main方法:

输入n,创建大小为n的int数组。
输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
使用Arrays.toString输出数组中的内容。
输入样例:
5
1
2
a
b
4
5
3
输出样例:
java.lang.NumberFormatException: For input string: “a”
java.lang.NumberFormatException: For input string: “b”
[1, 2, 4, 5, 3]

import java.util.*;
public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n=scan.nextInt();
		int a[]=new int[n];
		int count=0;
		while(count<n) {
			try {
				String temp=scan.next();
				int i=Integer.parseInt(temp);
				a[count++]=i;
			}catch(Exception e) {
				System.out.println(e);
			}
		}
		System.out.println(Arrays.toString(a));
		scan.close();
	}
}

R7-3 天不假年 (10 分)
程序填空题。根据题目要求完善下面的代码。请提交完整代码。 “今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。 Person类的setAge方法用于更新年龄。 如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。

import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int age;
age = in.nextInt();
Person p = new Person(age);
age = in.nextInt();
try{
p.setAge(age);
}catch(AgeException e){
}
}
}
class Person{
int age;
public Person(int age){
this.age = age;
}
public void setAge(int age) throws AgeException {
if(this.age <=age){
this.age = age;
}else{
throw new AgeException();
}
}
}
class AgeException extends Exception{
}
输入格式:
输入在一行中给出2个绝对值不超过100的正整数A和B。

输出格式:
在一行中输出一个字符A或者B。

输入样例:
50 18
输出样例:
B


import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int age;
        age = in.nextInt();
        Person p = new Person(age);
        age = in.nextInt();
        try{
            p.setAge(age);
            System.out.println("A");
        }catch(AgeException e){
            System.out.println("B");
        }
    }
}
class Person{
    int age;
    public Person(int age){
        this.age = age;
    }
    public void setAge(int age) throws AgeException {
        if(this.age <=age){
            this.age = age;
        }else{
            throw new AgeException();
        }
    }
}
class AgeException extends Exception{
}

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

输入格式:
从键盘中输入学生人数n

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

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

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

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

输出格式:
显示及格总人数

显示不及格总人数

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

3
100
30
60
输出样例:
在这里给出相应的输出。例如:

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

2
200
69
30

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

R7-2 jmu-Java-01入门-取数字浮点数 (10 分)
本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。

输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。

输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。

输入样例:
-123.01
234
输出样例:
7
9

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (true) {
			String s = sc.nextLine();
			char[] ch = s.toCharArray();
			int sum = 0;
			for (int i = 0; i < ch.length; i++) {
				if (ch[i] == '-'|| ch[i] == '.') {

				} else {
					//将字符char类型转换成int类型
					int temp = Integer.parseInt(String.valueOf(ch[i]));
					sum += temp;
				}
			}
			System.out.println(sum);
		}
	}
}

R7-8 求矩阵主对角线元素的和 (10 分)
编写一个程序,求n x n的double类型矩阵中主对角线上所有数字的和。

输入格式:
第一行输入矩阵的阶数n(0<=n<=10)。 第二行输入矩阵的n x n个double类型的数值。

输出格式:
输出n x n的double类型矩阵中对角线上所有数字的和(double型数值)。

输入样例:
4
1 2 3 4 5 6.5 7 8 9 10 11 12 13 14 15 16
输出样例:
34.5

import java.util.*;
public class Main {
	   public static void main(String[] args) {
		    Scanner cin=new Scanner(System.in);
		    int n=cin.nextInt();
		    double[][]d=new double[n][n];
		    double sum=0;
		    for(int i=0;i<n;i++) {
		    	 for(int j=0;j<n;j++) {
		    		 d[i][j]=cin.nextDouble();
		    		 if(i==j)
		    		 {
                  sum+=d[i][j];		    			 
		    		 }
		    	 }
		     }
		  System.out.println(sum);  
	   }
	     
}
	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值