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 ...
随机推荐
- Win7下部署Lepus企业级MySQL数据库监控
从官网下载(http://www.lepus.cc/soft/17)安装包后,解压到phpStudy的www目录下: 打开phpStudy管理界面,找到站点管理,并新增站点: 在浏览器里面打开后,报此 ...
- 集成学习方法Boosting和Bagging
集成学习是通过构架并结合多个学习器来处理学习任务的一种思想, 目前主要分为两大类:Boosting和Bagging. 对于任意一种集成方法, 我们都希望学习出来的基分类器具有较高的准确性和多样性, 基 ...
- 纯JS实现在一个字符串b中查找另一个字符串a出现的所有位置,并且不使用字符串的方法(递归)
问题:判断字符串A在中所有出现字符串B中(长度大于1)的索引.不得使用字符串方法indexof,substring等 有小伙伴在面试遇到了这个问题,乍一看如果使用使用字符串方法indexof,subs ...
- 数论 Day 13
数论_CRT(中国剩余定理)& Lucas (卢卡斯定理) 前言 又是一脸懵逼的一天. 正文 按照道理来说,我们应该先做一个介绍. 中国剩余定理 中国剩余定理,Chinese Remainde ...
- Salesforce LWC学习(七) Navigation & Toast
上一篇我们介绍了针对LWC中常用的LDS的适配的wire service以及@salesforce模块提供的相关的service,其实LWC中还提供其他的好用的service,比如针对导航相关的lig ...
- JavaScript如何给td赋值
td里加个标签,如: <td><div id="aa"></div></td> document.getElementById('a ...
- 六星教育php vip视频(分享)
最近看的一个swoole的课程,应该也算是vip课程了,不是公开的直播课 比较有特点有一定深度,swoole的实战教程一直也不多,结合swoole构建一个新型框架,最后讲解如何实现分布式RPC的调用. ...
- 2019年全国新课标I卷文理科数学LaTeX排版试题与解析
整体分析,没有偏怪难题之分,中等题偏多,题目较往年有题型改动变化,但难度还称不上很难.具体内容贴上链接! https://mp.weixin.qq.com/s/WKXhCKI_-z3UT-zUwI23 ...
- WPF 自定义UI控件学习
最近项目中运用到了WPF处理三维软件,在C/S结构中WPF做UI还是有很多优越性,简单的学了一点WPF知识,成功的完成项目目标.项目过度阶段对于WPF的一些基本特点有了进一步了解 .至此花费一点时间研 ...
- AirFlow简介
1, 简介 Airflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行.airflow提供了丰富的命令行工具用于系统管控 ...