Java字符串课后作业
【实验任务】
1、实验题目:字串加密
2、实验内容:古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
3、设计思想:本程序共分为部分:1、利用输入语句输入用户要加密的字符串,有两种方法:(1)利用scanner语句输入,然后利用.nextLine()转换为string类型的字符串。(2)利用窗口输入语句,JOptionPane.showInputDialog(“…”),输入的就是string类型的字符串。2、定义一个flag判断该字符串中是否含有不符合规定的字符,如果有在输出的时候输出用户输入错误的字符。3、定义两个string字符串,一个是存储正确的字符,另一个是存储不符合规定的字符。利用for循环和if语句,将输入的字符分成两部分一部分是a-w和A-W,转换方法为+3。第二部分为x-z和X-Z,转换方法为—23,得到abc。4、输出加密后的字符串或输出输入错误的字符,同样和输入时一样有两种方法,本程序采用的第二种方法。
4、程序流程图:
5、源代码:Kaisa.java
//字串加密。
//ZhaoXuan Li,October 27th,2016.
import javax.swing.JOptionPane;
public class Kaisa
{
public static void main(String[] args)
{
String a=JOptionPane.showInputDialog("请输入要加密的明文:");
boolean flag=true;
int s=a.length(),i;
String output="",output1="";
for(i=0;i<s;i++)
{
if((a.charAt(i)<='w'&&a.charAt(i)>='a')||(a.charAt(i)<='W'&&a.charAt(i)>='A'))
{
output+=(char)(a.charAt(i)+3);
}
else if((a.charAt(i)>='x'&&a.charAt(i)<='z')||(a.charAt(i)>='X'&&a.charAt(i)<='Z'))
{
output+=(char)(a.charAt(i)-23);
}
else
{
output1+=a.charAt(i);
output1+=" ";
flag=false;
}
}
if(flag) JOptionPane.showMessageDialog(null,"您输入的明文为:"+a+"\n译文为:"+output,"encryption",JOptionPane.PLAIN_MESSAGE);
else JOptionPane.showMessageDialog(null,"您输入的"+output1+"不符合要求(不在大小写字母范围内!)","errow",JOptionPane.PLAIN_MESSAGE);
}
}
6、结果截图:
课后作业
课后作业之字串加密、动手动脑之String.equals()方法、整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明、阅读笔记
Length():获取字符串长度,字符串是一个对象,在这个对象中包含length属性,使用String类中的length()方法可以获取字符串长度。
charAt():获取指定位置的字符。
getChars():获取从指定位置起的子串复制到字符数组中(它有四个参数,1.被拷贝字符在字串中的起始位置 2.被拷贝的最后一个字符在字串中的下标再加1 3.目标字符数组 4.拷贝的字符放在字符数组中的起始下标)。
replace():字符串替换,通过String类的replace()方法,可以将原字符串中的某个字符替换为指定的字符,并得到一个新的字符串,该方法的具体定义如下:public String replace(char oldChar,char newChar)。
toUpperCase():大写转换,在String类中提供用来实现字母大写转换的方法,返回值为转换后的字符串,方法toUpperCase()用来将字符串中的所有小写字母改为大写字母。
toLowerCase()、小写转换,在String类中提供用来实现字母小写转换的方法,返回值为转换后的字符串,方法toLowerCase()用来将字符串中的所有大写字母改为小写字母。
trim():去除头尾空格,通过String类的trim()方法,可以通过去掉字符串的首尾空格得到一个新的字符串,该方法的具体定义如下:public String trim()。
toCharArray():将字符串对象转换为字符数组。
动手动脑一
- Ø 请运行以下示例代码StringPool.java,查看其输出结果。如何解释这样的输出结果?从中你能总结出什么?
实验结果:
总结:在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0,s1,s2实际上引用的是同一个对象。
编译器在编译s2一句时,会去掉“+”号,直接把两个字串连接起来得一个字串(“Hello”)。这种优化工作由Java编译器自动完成。
当直接使用new关键字创建字符串对象时,虽然值一致(都是“Hello”),但仍然是两个独立的对象。
动手动脑二
再看……
为什么会有上述的输出结果?从中你又能总结出什么?
总结:给字串变量赋值意味着:两个变量(s1,s2)现在引用同一个字符串对象“a”!
String对象的内容是只读的,使用“+”修改s1变量的值,实际上是得到了一个新的字符串对象,其内容为“ab”,它与原先s1所引用的对象”a”无关,所以,s1==s2返回false;
代码中的“ab”字符串是一个常量,它所引用的字符串与s1所引用的“ab”对象无关。
String.equals()方法可以比较两个字符串的内容。
动手动脑三
请查看String.equals()方法的实现代码,注意学习其实现方法。
public class StringEquals {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
String s1=new String("Hello");
String s2=new String("Hello");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
String s3="Hello";
String s4="Hello";
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
}
}
实验结果:
动手动脑四
- Ø String类的方法可以连续调用:
String str="abc";
String result=str.trim().toUpperCase().concat("defg");
- Ø 请阅读JDK中String类上述方法的源码,模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性,其调用示例为:
MyCounter counter1=new MyCounter(1);
MyCounter counter2=counter1.increase(100).decrease(2).increase(3);
….
实验代码:MyCounter.java
//模仿其编程方式,编写一个MyCounter类,它的方法也支持上述的“级联”调用特性。
//ZhaoXuan Li,October 27th,2016.
public class MyCounter
{
public static void main(String[] args)
{
String s="aqz";
String result=s.trim().toUpperCase().concat("qwe");
System.out.println(result);
}
}
实验结果:
Java字符串课后作业的更多相关文章
- Java数组课后作业
1.运行TestArrays.java,了解Arrays中的一些重要方法的用法. Arrays.equals(a 1, a2):判断数组是否相等. int[] b = Arrays.copyOf(a, ...
- 05String字符串课后作业
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 由此可得出,用加号连接的字符串和一整个字符串相同代码判断是true,而新开辟空间的不 ...
- Java课程课后作业190315之从文档中读取随机数并得到最大连续子数组
从我上一篇随笔中,我们可以得到最大连续子数组. 按照要求,我们需要从TXT文档中读取随机数,那在此之前,我们需要在程序中写入随机数 import java.io.File; import java.i ...
- java课程课后作业05之动手动脑
一.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件 此代码没有使用walkfiletree,两者的差别在于walkfiletree在遍历文件的时候有一 ...
- JAVA课程课后作业03之作业一
作业:使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 代码: package TestJava; import java ...
- java ppt课后作业
1 .仔细阅读示例: EnumTest.java,运行它,分析运行结果? 枚举类型是引用类型,枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象.可以使用“==”和e ...
- java课程课后作业190425之一维数组最大子数组(界面实现)
题目要求: 1.在第一个问题过程中,我在以前的代码中好像已经写出了这个功能,想要实现这个功能,我们只需要在我们储存的数组和是负数的时候对中转值进行重新赋值就可以得到新的数值的起始位置,而他的终了位置就 ...
- Java的课后作业——18.10.18
日期:2018.10.18 星期四 博客期:020 小试验任务: 我就发一下代码好了!!! package test1; import java.util.Scanner; public class ...
- java课程课后作业04之动手动脑
一.多层的异常捕获-1 先贴出代码: public class CatchWho { public static void main(String[] args) { try { try { thro ...
随机推荐
- 阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性
作者 | 阿里巴巴资深技术专家 雷卷,GitHub ID @linux-china 导读:在 Python.JavaScript 等一众编程语言崛起风靡之际,一代霸主 Java 风采虽不及当年,但仍 ...
- Erlang模块supervisor翻译
概要: 通用监督者行为 描述: 一个实现监督者的行为模块,一个监督被称为子进程的其它进程的进程.一个子进程可以是另一个监督者或工作者进程.工作者进程通常的实现使用gen_event,gen_fsm ...
- NetCore下的HTTP请求IHttpClientFactory
使用方式 IHttpClientFactory有四种模式: 基本用法 命名客户端 类型化客户端 生成的客户端 基本用法 在 Startup.ConfigureServices 方法中,通过在 ISer ...
- Django安装与简单事例-02
Django的下载与基本命令 1.下载Django: 1 pip3 install django 2.创建一个django project 1 django-admin.py startproject ...
- 【linux】【docker】docker及docker-compose安装
安装 一. docker安装 Centos 安装docker18.03 wget https://download.docker.com/linux/centos/7/x86_64/stable/Pa ...
- 【linux】【PostgreSQL】PostgreSQL安装
前言 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统.POSTGR ...
- 浅谈HDFS(一)
产生背景及定义 HDFS:分布式文件系统,用于存储文件,主要特点在于其分布式,即有很多服务器联合起来实现其功能,集群中的服务器各有各的角色 随着数据量越来越大,一个操作系统存不下所有的数据,那么就分配 ...
- 制定一个学习liunx的目标
制定一个学习liunx的目标 学习目标方法 1.在这五个月的学习时间里,制定一套自己的学习方式. 2.养成做笔记以及写博客的习惯 . 3.坚持上课前预习,自习时间总结 . 4.紧跟 ...
- 死磕 java同步系列之zookeeper分布式锁
问题 (1)zookeeper如何实现分布式锁? (2)zookeeper分布式锁有哪些优点? (3)zookeeper分布式锁有哪些缺点? 简介 zooKeeper是一个分布式的,开放源码的分布式应 ...
- mysql 最左前缀匹配原则
1.在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,示例:对列col1.列col2和列col3建一个联合索引 KEY index_col1_co ...