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 ...
随机推荐
- Python保留小数的几种方法
Python保留小数的几种方法 1.使用字符串格式化 print("%.2f"%a) 2.使用round内置函数 round(num,2) 3.使用Decimal模块 from d ...
- Python3-编码问题-解决为何我的python打印总是出现乱码??
#python3 编码问题: ############举个例子############################### import sys print(sys.getdefaultencodi ...
- android 百度地图入门01 (史上最详没有之一)
最近一直和百度地图打交道,写几篇博客记录一下吧,目前最新版是4.0的 ,之前我用的是3.7的, 就以4.0的为例说一下最基本的配置流程吧. 一.准备工作 1.申请一个百度地图开发者账户--地址:htt ...
- Netty源码分析 (九)----- 拆包器的奥秘
Netty 的解码器有很多种,比如基于长度的,基于分割符的,私有协议的.但是,总体的思路都是一致的. 拆包思路:当数据满足了 解码条件时,将其拆开.放到数组.然后发送到业务 handler 处理. 半 ...
- [Leetcode] 第148题 排序链表
一.题目描述 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序. 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示 ...
- jsp 中include使用问题
如果在需要在jsp页面做页面包含时 会使用到include 指令 来进行页面包含操作 这里是页面的头部 文件名称是head.jsp <%@ page language="java&qu ...
- JAVASE知识点总结(三)
第十六章:抽象类和接口 一.抽象方法:在方法面前加了abstract(为了解决,子类必须要覆盖此方法,在定义的时候不要方法体). 特点:1.抽象方法没有方法体. 2.抽象方法必须放在抽象类(类前面加上 ...
- 基于python的scrapy环境搭建
0.1安装python软件 32位机的电脑安装python-3.6.3.exe 64位机的电脑安装python-3.6.3-amd64.exe 0.1.1 python环境搭建 执行安装程序 选择Ad ...
- 性能测试之 Gatling
在应用程序上线之前,有多少人做过性能测试? 估计大部分开发者更多地关注功能测试,并且会提供一些单元测试和集成测试的用例.然而,有时候性能漏洞导致的影响比未发现的业务漏洞更严重,因为性能漏洞影响的是整个 ...
- Java8新特性——stream流
一.基本API初探 package java8.stream; import java.util.Arrays; import java.util.IntSummaryStatistics; impo ...