Java程序设计---实验5

1、实验题目:字符串加密

键盘输入一个原始字符串作为明文,然后使用加密方法加密,再对加密字符串进行解密。样例如下图,加密方法自定,完成其功能并测试。

import java.util.Scanner;
public class S5_1 {
    public static void main(String[] args){
        Scanner sca=new Scanner(System.in);
        Encryption encry=new Encryption();
        System.out.print("明文:");
        encry.str1=sca.nextLine();
        System.out.println("*********************");
        System.out.println("加密方法:每个字符的ASCII码加1");
        System.out.println("*********************");
        System.out.print("密文:");
        encry.JiaMi();
        System.out.println("*********************");
        System.out.print("解密:");
        encry.JieMi();
    }
}
class Encryption{
    String str1;
    char[] c;
    void JiaMi(){
        c=str1.toCharArray();
        for(int i=0;i<c.length;i++) {
            c[i] = (char) (c[i] + 1);
        }
        System.out.println(new String(c));
    }
    void JieMi(){
        for (int i=0;i<c.length;i++){
            c[i]=(char) (c[i]-1);
        }
        System.out.println(new String(c));
    }
}

2、实验题目:模拟用户登录

编写一个程序,模拟用户登录。程序要求如下:

(1)用户名和密码正确(不区分大小写),提示“登录成功”,并打开Windows的计算器程序;

(2)用户名或密码不正确,提示“用户名或密码错误”;

(3)总共有3次登录机会,超过3次,则提示“登录失败,无法再继续登录”。

import java.util.Scanner;
import java.io.*;
public class S5_2 {
    public static void main(String[] args) {
        Scanner sca=new Scanner(System.in);
        User user=new User();
        int i;
        for(i=2;i>=0;i--) {
            System.out.println("~~~~~~用户登录~~~~~~~");
            System.out.print("用户名:");
            user.name = sca.nextLine().toLowerCase();
            System.out.print("密码:");
            user.pwd = sca.nextLine();
            user.i=i;
            user.login();
        }
}
 static class User{
    static String username = "admin";
     static String password = "123";
    String name;
    String pwd;
    int i;
    public void login(){
        if (name.equals(username) && pwd.equals(password)) {
            System.out.println("登录成功,欢迎您:" + username);
            try {
                Runtime.getRuntime().exec("cmd /c start C:\\WINDOWS\\system32\\calc.exe");
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        } else {
            if (i==0){
                System.out.println("你的登录次数已经用完.");
            }else {
            System.out.println("~~~~~~~~~~~~~~~~~~~~");
                System.out.println("登录失败,你今天还有" + (i) + "次登录的机会!");
            }
        }
    }
    }
}

3、实验题目:统计字符个数

从键盘输入一个字符串,分别统计该字符串中所有大写字母、小写字母、数字、其它字符的个数,并分类输出这些字符和统计结果。(提示:不考虑字符内容,例如:Hello123World,大写2个,小写8个,数字3个。)

import java.util.Scanner;
public class S5_3 {
    public static void main(String[] args){
        Scanner sca=new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String str=sca.nextLine();
        int smallCount=0;
        int bigCount=0;
        int numCount=0;
        int otherCount=0;
        for (int i = 0; i < str.length(); i++) {
            char x = str.charAt(i);
            if (x>=65&&x<=90) {
                bigCount++;
            } else if(x>=97&&x<=122) {
                smallCount++;
            }else if (x>=48&&x<=57) {
                numCount++;
            }else {
                otherCount++;
            }
        }
        System.out.println("大写字母有"+bigCount+"个");
        System.out.println("小写字母有"+smallCount+"个");
        System.out.println("数字有"+numCount+"个");
        System.out.println("其他字符有"+otherCount+"个");

    }
}

4、实验题目:字符串缓冲区练习

(1)使用StringBuffer类对键盘输入的字符串进行反转。

(2)使用String和StringBuffer类分别对数组进行字符串拼接,使其变成一个字符串。

import java.util.Scanner;
public class S5_4 {
    public static void main(String[] args) {
        Scanner sca=new Scanner(System.in);
        StringBuffer sb=new StringBuffer();
        System.out.println("~~~~~~~~~~~~~~~~~~~~");
        System.out.print("请输入要反转的字符串:");
        String str=sca.nextLine();
        sb.append(str);
        System.out.println("反转后的字符串:"+sb.reverse());
        int n;
        System.out.print("请输入字符串数组的长度:");
        n=sca.nextInt();
       String[] str1=new String[n];
      for(int i=0;i<str1.length;i++){
          str1[i]=sca.next();
      }
        for(int i=0;i<str1.length;i++){
            System.out.println(str1[i]+" ");
        }
        System.out.println("String类");
        String s="";
        for(int i=0;i<str1.length;i++){
            s+=str1[i];
        }
        System.out.println(s);
        System.out.println("StringBuffer类");
        StringBuffer sb1=new StringBuffer();
        for(int i=0;i<str1.length;i++){
            sb1.append(str1[i]);
        }
        System.out.println(sb1);
    }
}

5、实验题目:生成验证码

使用Random类创建一个6位的验证码,其中包含数字、字母的组合,并通过键盘输入该验证码,验证通过(不区分大小写)时提示“恭喜验证成功!”,否则提示“验证失败!”。 

import java.util.Random;
import java.util.Scanner;
public class S5_5 {
    public static void main(String[] args) {
        Scanner sca=new Scanner(System.in);
        System.out.println("~~~~~~~~~~~~~~~~~~~");
        int a = 1234567890;
        String b ="abcdefghijklmnopqrstuvwxyz";
        String B=b.toUpperCase();
        String c=a+b+B;
        char[] d=c.toCharArray();
        System.out.println("验证码");
        Random random=new Random();
        String f="";
        for(int i=0;i<6;i++){
            int index = random.nextInt(d.length);
            f+=d[index];
        }
        System.out.println(f);
        System.out.print("请输入验证码:");
        String s=sca.nextLine();
        if(s.equalsIgnoreCase(f)){
            System.out.println("恭喜验证成功!");
        }else{
            System.out.println("验证失败!");
        }
    }
}

6、实验题目:春节倒计时

根据所学知识,计算明年(兔年)春节的倒计时天数并输出:“距离兔年春节还有***天”。

import java.util.*;
public class S5_6 {
    public static void main(String[] args){
        Date date=new Date();
        System.out.print("当前日期是");
        System.out.println(date.getYear()+1900+"年"+date.getMonth()+1+"月"+date.getDate()+"日");
        Judge j=new Judge();
        int x=j.judge(date.getYear()+1900);//今年天数
        int y=j.judge(date.getYear()+1900+1);//明年天数
        Calendar c1=Calendar.getInstance();
        Calendar c2=Calendar.getInstance();
        c2.set(Calendar.YEAR,2023);
        c2.set(Calendar.MONTH,0);
        c2.set(Calendar.DAY_OF_MONTH,1);
        c2.set(Calendar.HOUR,0);
        c2.set(Calendar.MINUTE,0);
        c2.set(Calendar.SECOND,0);
        long days=(c2.getTimeInMillis()-c1.getTimeInMillis())/(1000*60*60*24)+y;
        System.out.println("距离下一年的春节还有"+days+"天");
    }
}
class Judge{
    public int judge(int y){
        int x;
        if((y%4==0 && y%100!=0) || (y%400==0)){
            x=366;
        }else{
            x=355;
        }
        return x;
    }
}

7、实验题目:二月天

二月是一个有趣的月份,平年的二月有28天,闰年的二月有29天。编写一个程序,从键盘输入年份,根据输入的年份计算这一年的二月有多少天。

import java.util.Scanner;
public class S5_7 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入你要判断的年份:");
        System.out.println();
        int y = input.nextInt();
        if((y%4==0 && y%100!=0) || (y%400==0)){
            System.out.println("该年为闰年,二月有29天");
        }else{
            System.out.println("该年为平年,二月有28天");
        }
    }
}

8、实验题目:正则表达式。(选做)

“中华人民共和国成立于1949年10月1日”,利用正则表达式提取出其中的数字。

public class S5_8 {
    public static void main(String[] args) {
        String s="中华人民共和国成立于1949年10月1日";
        char[] ch=s.toCharArray();
       String regex="\\d";
        System.out.println("中华人民共和国成立于1949年10月1日");
        System.out.print("通过正则表达式提取的数字为:");
        for(int i=0;i<s.length();i++){
            String str= String.valueOf(ch[i]);
            if(str.matches(regex)){
              System.out.print(ch[i]+" ");
            }
        }
    }
}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java程序设计》课程实验指导书程序代码(答案)(实验五:Java的异常处理),个人原创,仅供参考与交流。 希望多多交流,共同进步! 实验Java的异常处理 一、实验目的: 理解 java 语言中独特的异常处理机制; 掌握异常处理方法; 正确地使用捕获异常和声明抛弃异常的两种异常处理的方法; 了解自定义异常类的使用; 理解抛出异常和声明抛出异常的区别与联系; 二、实验内容: 1. 从命令行得到5个整数,放入一整型数组,然后打印输出,要求:如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。 2.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。 3.自定义类Sanj,其中有成员 x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。 三、实验要求: 1. 通过实验掌握捕获异常和声明抛弃异常的两种异常处理的方法; 2. 程序必须能够捕获Integer.parseInt()产生的异常并作相应的处理; 3. 程序必须能够将处理的相应的信息输出出来; 4. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提材示,并给出解决办法。(附运行界面、源代码)。 四、实验步骤: 1. (第1题) 使用try…..catch…. finally语句对Integer.parseInt()产生的异常进行捕获处理; 2. (第2题) 定义方法void sanjiao(int a,int b,int c)中,不符合条件则抛出异常(if a+b<=c(或a+c<=b,b+c<=a) then throw new IllegalArgumentException(),),再定义main方法,调用此方法,用try…..catch…. finally语句并捕获异常; 3. (第3题) 定义三角形类及相应的方法, 在定义的方法中对不符合条件则抛出异常(如上题) ,再定义main方法,对正确的数据输出正确信息,否则捕获异常; 五、自做实验 1.参考下面的程序,试修改程序,捕获相关异常,使得程序能正常运行。[提示:用错误数据测试,即可得到异常类名,运行时主方法参数输入 abc 测试] public class StringIndexOutOf{ public static void main(String args[]){ System.out.println("字符串索引越界异常"); String str=args[0]; System.out.println(“第四个字符为 ”+str.charAt(3)); int aa=Integer.parseInt(args[0]); System.out.println(“平方为 ”+aa*aa); } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用户1234567890

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值