`
Sunflower-13
  • 浏览: 72847 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

学String类后的习题及二、八、十、十六、九进制之间相互转换

阅读更多
学String类后实现的简单习题
1、检查字符串是否是回文字符串
在学习String类后,发现做回文数可以不用数组做,只需要用到String类中的charAt(int index) 方法获取index处的char值,取到字符串首位的字符依次进行比较即可。
代码如下:
import java.util.Scanner;
public class Palindromic {
public static void main(String[] args){
System.out.println("请输入数据: ");
Scanner sc=new Scanner(System.in);
String s=sc.next();
boolean t=true;
for(int i=0,j=s.length()-1;i<=s.length()/2;i++){
//charAt(i))返回i处的 char 值 ,charAt(j))返回j处的 char 值
if(s.charAt(i)!=s.charAt(j)){
t=false;
break;
}
else{
j--;
}
}
if(t){
System.out.println("是回文数");
}else{
System.out.println("不是回文数");
}
}
}

2、删除给定字符串
删除给定的字符串只需要使用String类中的replace(char oldChar, char newChar) 方法实现,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的,删除便可把要删除的数替换成空字符即可,然后返回一个新的字符串。
代码如下:
import java.util.Scanner;
public class  Del {
public static void main(String[] args){
String str1="ab,ac,de,fg,hi,jk,lm,no";
System.out.println(str1);
System.out.println("请输入要删除的字符串: ");
Scanner sc=new Scanner(System.in);
String s=sc.next();
String str2=str1.replace(s, "");
System.out.println(str2);
    }
}

3、倒置字符串
倒置字符串的话需要定义一个空字符串放倒置后的字符串,先使用charAt(int index) 方法获取index处的char值,然后用取到的值累加进定义好的字符串中便轻松实现看字符串倒置。
代码如下:
public class two {
public static void main(String[] args){
String s="abcdefg";
String s1="";
for(int i=0;i<s.length();i++){
char t=s.charAt(i);
s1=t+s1;//用t加s1实现字符串倒置
System.out.println(s1);
}
}
}
4、去除随机生成字符串中的重复字符,并将新的字符串输出。
写了一个静态方法用Random类随机生成字符串,然后在主函数中调用并且使用contains(CharSequence s)方法去除重复字符。还可以直接用Math.random()直接随机产生字符串,再获取字符,只是要注意要进行类型转换,如:int t=(int)(Math.random()*str.length();char c = string.charAt(t);
代码如下:
import java.util.Random;
public class  random {
public static void main(String[] args){
String s1=removerepeatedchar("abcdefg");
System.out.println(s1);
String str1="";
for(int i=0;i<s1.length();i++){
char c = s1.charAt(i);
   //当且仅当str1字符串不包含c 值时,返回 true ,c+""使c变成字符串,然后把c加进str1中,从而达到去除重复的目的。
if(!str1.contains(c+"")){
str1+=c;
}
}
System.out.println(str1);
}
private static String removerepeatedchar(String string) {
Random rd = new Random();
String s="";
for(int i=0;i<10;i++){
int t = rd.nextInt(s1.length());//从s1中随机一个下标
char c = string.charAt(t);//取出下标t处的字符 s+=c;
}
return s;
}
}

5、验证码是目前网络中应用最广泛的一种安全机制,可防止一些不良信息的侵入。随着网络的发展,验证码也由原本简单的数字变成汉字校验。
     本实验要求使用Java分别获取四种验证码。
  1)、由数字0-9组成的全数字验证码
  2)、由英文字母和标点符号组成的字符验证码
  3)、全部由中文组成的验证码
  4)、字符+数字的混合验证码
代码如下:
用一个静态方法随机生成四个字符,然后在主函数中调用并传参数进去,便可产生想要的验证码(生成随机字符的方法与上题雷同)。
import java.util.Random;
public class Yanzhengma {
public static void main(String[] args) {
String str1 = "0123456789";
String str2 = "全部由中文组成的验证码";
String str3 = ",。;’“:、!?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String str4 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String code1 = randomString(str1);
System.out.println(code1);
String code2 = randomString(str2);
System.out.println(code2);

String code3 = randomString(str3);
System.out.println(code3);

String code4 = randomString(str4);
System.out.println(code4);

}
public static String randomString(String str) {
Random rd = new Random();
String code = "";
for (int i = 0; i < 4; i++) {
int t = rd.nextInt(str.length());
char c = str.charAt(t);
code += c;
}
return code;
}
}
6、编写一个Java程序,将一个八进制数转换成二进制、十进制、十六进制和九进制。也可以将一个十进制数转换成十六进制、八进制、十进制和二进制。
十进制转任意进制的基本思想是:用十进制数分别对2、8、9、16进制求余,然后处以该进制,直到被除数为零为止。(要注意十六进制转换时,a、b、c、d、e、f的表示时,如a的ASSCIL码为97,即当a=10时要加上87才能输出a)。
任意进制转十进制:例如八进制数144要转换成十进制,转成十进制即1乘8的二次方加上4乘8的2一次方加上4乘8的零次方。(要注意十六进制转换时,由于是用字符类型转整型输出,a、b、c、d、e、f要进行相应转换,如a的ASSCIL码为97,即当a=10时要减87才能输出int型数值,同样,2、8、9进制进行转换是也要把字符类型转换成int类型,故需要减48得到int型数值)。这样转换可能有点复杂,另一种方法是可以直接定义一个字符串然后把0-9、a-f放进去取其地址值,即:String s="0123456789abcdef";Char c=s.charAt(a);可以实现。
进制互相转换:例如八进制转十六进制,先把八进制数转换成十进制数,然后十进制数再转换成十六进制。
import java.lang.Math;
public class eight3 {
public static void main(String[] args) {
String s = changeNum(100, 16);
System.out.println(s);
int x = change2Num(s, 16);
System.out.println(x);
int t = change2Num("1100100",2);
String ss = changeNum(t,;
System.out.println(ss);
}

// 将十进制转换成对应的进制
/**
* 将十进制的数字转换成指定进制的数字字符串
*
* @param num
*            要转换的十进制数字
* @param t
*            进制
* @return 返回转换之后的数字字符串 char c=s.charAt(a);
*/
public static String changeNum(int num, int t) {
String s = "";
while (num > 0) {
int a = num % t;
if (a >= 10) {
char c = (char) (a +87);//String s="0123456789abcdef";
//Char c=s.charAt(a);
s = c + s;
} else {
s = a + s;
}
num = num / t;
}
return s;
}
public static int change2Num(String num, int t) {
int sum=0;
int j=0;
for(int i=num.length()-1;i>=0;i--){
char c = num.charAt(i);
if(c>=97){
sum+=(c-87)*Math.pow(t,j);//字母a的ASSCIL码值为97
}else{
sum+=(c-48)*Math.pow(t,j);//零的ASSCIL码值为48
}
j++;
}
return sum;
}
}
分享到:
评论
1 楼 Sun_TW 2016-11-21  
很有帮助,谢谢。

相关推荐

    C++关于信息学竞赛 函数章节 53个源文件试题 供初学者练习

    C++关于信息学竞赛 函数章节 53个源文件... //进制的转化 十进制转换为非十进制 非十进制 转换 成 十进制 int n,r; cin&gt;&gt;n&gt;&gt;r; fun(n,r); //11 } #include #include #include #include&lt;string&gt; using namespa

    python【蓝桥杯vip练习题库】ADV-309进制转换

    试题 算法提高 进制转换 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述  编写函数将十进制整数按8进制输出,然后编写main函数验证该函数。例如输入12,则输出为:12=014,输入32,则输出32=040。 输入格式 ...

    西电软工oop上机题目1(§6.6习题16)实验源码6.6-16.cpp

     islegal()判断传入的字符串是否符合题目要求的进制数(二、八、十、十六进制) ; atoi()函数用于将字符串转化为整型数; 首先调用symbol函数,判断正负,然后调用atoi函数,atoi函数内先调用islegal函数判断...

    西电软工oop上机题目1(§6.6习题17)实验源码6.6-17.cpp

    main函数从键盘获取一个数字,将数字传递给itoa函数,先对数字正负判断,然后判断数的进制,将其他进制的数转换为十进制,对是十进制数从右至左遍历的每一位,借助ASCLL,将每个数字转化为字符。

    语言程序设计课后习题答案

    1-9 请将以下十进制数值转换为二进制和十六进制补码: (1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) (2)10 = (10)2 = (2)16 (2) (9)10 = (1001)2 = (9)16 (3) (93)10 = ...

    java基础案例与开发详解案例源码全

    12.5.3 使用JDK5.0后提供的并发集合类324 12.6 用Timer类调度任务325 12.7 本章练习326 第13章 13.1 java.io.File类328 13.1.1 文件和目录是什么?328 13.1.2 Java对文件和目录的操作328 13.2 JavaIO原理332 13.3 流...

    数据结构(C++)有关练习题

    &lt;br&gt; 实验八 综合实验 内容及步骤: 1、请使用C++编写班级学生学籍管理程序 每个学生的信息包括:姓名、学号和英语、数学、程序设计及体育成绩。从键盘输入数据,建立数据文件student.dat,然后,...

    C++Primer视频(初级)下载地址

    二进制和十六进制 27.第3章标准库bitset类型 28.标准库bitset应用实例 29.第4章数组 30.第4章指针的引入 31.第4章使用指针操作数组元素 32.第4章指针和const限定符 33.第4章C风格字符串 34.第4章...

    《由浅入深学C++-基础、进阶与必做300题》pdf格式 (完整版 带目录

    2.1.3 变量的定义及赋值 22 2.1.4 变量的应用示例 24 2.2 基本数据类型 25 2.2.1 基本数据类型概述 25 2.2.2 整型数据类型 26 2.2.3 浮点型数据类型 27 2.2.4 字符型数据类型 29 2.2.5 布尔型数据类型 30 ...

    Java中的BigInteger类与BigDecimal类,细解,带例题

    作用:可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。这些大数都会以字符串的...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 进制转换 06 原码补码反码 07 物理层和数据链路层 08 网络层和arp协议 09 传输层和应用层 第2章 01 上节课复习 02 arp协议复习 03 字符编码 第3章 01 网络基础和dos命令 02 为何学习linux 03 课程内容介绍 04...

Global site tag (gtag.js) - Google Analytics