字符串相关:
将一个句子的单词反过来(单词原样),比如"i am cheating"变成"cheating am i"
1、写一个方法,实现字符串的反转,如:输入abc,输出cba
public static String reverse(String s){
int length=s.length();
StringBuffer result=new StringBuffer(length);
for(int i=length-1;i>=0;i--)
result.append(s.charAt(i));
return result.toString();
}
2、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。
函数代码如下:
public String[] split(String str, int chars){
int n = (str.length()+ chars - 1)/chars;
String ret[] = new String[n];
for(int i=0; i<n; i++){
if(i < n-1){
ret[i] = str.substring(i*chars , (i+1)*chars);
}else{
ret[i] = str.substring(i*chars);
}
}
return ret;
}
3、写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如(“我ABC”,4)应该截为“我AB”,输入(“我ABC 汉DEF”,6)应该输出为“我ABC”而不是“我ABC+汉的半个”。
public String subString(String str, int subBytes) {
int bytes = 0; // 用来存储字符串的总字节数
for (int i = 0; i < str.length(); i++) {
if (bytes == subBytes) {
return str.substring(0, i);
}
char c = str.charAt(i);
if (c < 256) {
bytes += 1; // 英文字符的字节数看作1
} else {
bytes += 2; // 中文字符的字节数看作2
if(bytes - subBytes == 1){
return str.substring(0, i);
}
}
}
return str;
}
4、将一个键盘输入的数字转化成中文输出
(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)
用java语言实现,,请编一段程序实现!
public class Reader {
private String strNum;
private String strNumChFormat;
private String strNumTemp;
private int intNumLen;
private String strBegin;
public Reader(String strNum) {
this.strNum = strNum;
}
public boolean check(String strNum) {
boolean valid = false;
if (strNum.substring(0,1).equals("0")){
this.strNum = strNum.substring(1);
}
try {
new Double(strNum);
valid = true;
}
catch (NumberFormatException ex) {
System.out.println("Bad number format!");
}
return valid;
}
public void init() {
strNumChFormat = "";
intNumLen = strNum.length();
strNumTemp = strNum;
strNumTemp = strNumTemp.replace('1', '一');
strNumTemp = strNumTemp.replace('2', '二');
strNumTemp = strNumTemp.replace('3', '三');
strNumTemp = strNumTemp.replace('4', '四');
strNumTemp = strNumTemp.replace('5', '五');
strNumTemp = strNumTemp.replace('6', '六');
strNumTemp = strNumTemp.replace('7', '七');
strNumTemp = strNumTemp.replace('8', '八');
strNumTemp = strNumTemp.replace('9', '九');
strNumTemp = strNumTemp.replace('0', '零');
strNumTemp = strNumTemp.replace('.', '点');
strBegin = strNumTemp.substring(0, 1);
}
public String readNum() {
if (check(strNum)) {
init();
try {
for (int i = 1, j = 1, k = 1; i < intNumLen; i++) {
if (strNumTemp.charAt(intNumLen - 1) == '零' && i == 1) {
strNumChFormat = "位";
}
else if (strNumTemp.charAt(intNumLen - i) == '零' && j == 1) {
strNumChFormat = "位" + strNumChFormat;
}
else if (strNumTemp.charAt(intNumLen - i) == '点') {
j = 1;
k = 1;
strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
continue;
}
else {
strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
}
if (strNumTemp.charAt(intNumLen - i - 1) != '位' &&
strNumTemp.charAt(intNumLen - i - 1) != '零') {
if (j == 1 && i < intNumLen) {
strNumChFormat = '拾' + strNumChFormat;
}
else if (j == 2 && i < intNumLen) {
strNumChFormat = '百' + strNumChFormat;
}
else if (j == 3 && i < intNumLen) {
strNumChFormat = '千' + strNumChFormat;
}
}
if (j == 4 && i < intNumLen) {
j = 0;
}
if (k == 4 && i < intNumLen) {
strNumChFormat = '万' + strNumChFormat;
}
else if (k == 8 && i < intNumLen) {
k = 0;
strNumChFormat = '亿' + strNumChFormat;
}
j++;
k++;
}
while (strNumChFormat.indexOf("位") != -1) {
strNumChFormat = strNumChFormat.replaceAll("位", " ");
}
if (strNumChFormat.substring(0, 2) == "一拾") {
strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());
}
if (strNumChFormat.indexOf("点") >= 0) {
String rebegin = strNumChFormat.substring(0,
strNumChFormat.indexOf("点"));
String relast = strNumChFormat.substring(strNumChFormat.indexOf("点"),
strNumChFormat.length());
for (int i = 1; i <= relast.length(); i++) {
relast = relast.replaceAll("拾", "");
relast = relast.replaceAll("百", "");
relast = relast.replaceAll("千", "");
relast = relast.replaceAll("万", "");
relast = relast.replaceAll("亿", "");
}
strNumChFormat = rebegin + relast;
}
}
catch (ArrayIndexOutOfBoundsException ex) {
ex.printStackTrace();
}
catch (Exception ex) {
ex.printStackTrace();
}
int off = strNumChFormat.indexOf("点");
strNumChFormat = strBegin + strNumChFormat.substring(0);
}
else {
strNumChFormat = "";
}
return strNumChFormat;
}
public static void main(String args[]) {
try {
String number = args[0].toString();
System.out.println("The number is: " + number);
Reader reader = new Reader(number);
System.out.println("Output String: " + reader.readNum());
}
catch (Exception ex) {
System.out.println("Please input like that: javac Reader <number>");
}
}
}
5、统计一个字符串中出现某个字母的次数(注意区分大小写)。
String类中的相关方法(具体用法请查看JDK帮助文档):
length( ):计算字符串长度,得到一个int型数值;
indexOf( ):在字符串中定位某个子串,并返回位置编号
substring( ):截取字符串中的一部分,并作为一个新字符串返回;
equals( ):比较两个String内容是否完全相同。
String str = ”abckajbfhbbkhfgabkbjkdfasjkbdanjkasfbai”;
String chr = ”b”;
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (chr.equals(str.charAt(i)))
count++;
}
System.out.println(“The count is ” + count);
6、编写测试两个字符串String str1=”It is”和String str2=”It is”;是否相等
将” a book.”与其中的str1字符串连接
用m替换新字符串中的i
public class Ex11 {
public static void main(String[] args) {
String str1=”It is”;
String str2=”It is”;
//比较字符串
System.out.println(“str1==str2的结果:“+(str1==str2));
System.out.println(“str1.equals(str2)的结果:“+str1.equals(str2));
//连接字符串
String str3=str1.concat(“a book”);
System.out.println(“连接后的字符串为:“+str3);
//替换字符
String str4=str3.replace(‘i’,'m’);
System.out.println(“替换后的字符串为:“+str4);
}
}
7、判断字符串是否回文
public class HuiWen {
public static void main(String[] args) {
String s = "abbcbcbba";
StringBuffer sbuff = new StringBuffer(s);
String rs = sbuff.reverse().toString();// 倒序一个字符串
System.out.println(s.equals(rs));
}
}
7、设计一个Java程序,自定义异常类,从键盘输入一个字符串,如果该字符串值为“abc”,则抛出异常信息,如果从键盘输入的是其他字符串,则不抛出异常。
参考代码:
import java.util.Scanner;
class MyException extends Exception{
private String errorMsg;
//getter和setter方法
public MyException(String errorMsg){
this.errorMsg=errorMsg;
}
@Override
public String toString() {
return errorMsg;
}
}
public class Ex11 {
public static void main(String[] args) {
String strIn;
Scanner scan=new Scanner(System.in);
strIn=scan.nextLine();
try {
if(strIn.equals(“abc”))
throw new MyException(“输入的字符串不正确!“);
} catch (MyException e) {
System.out.println(e);
}
}
}
8、设计一个Java程序,从键盘输入两个数,进行减法运算。当输入串中含有非数字时,通过异常处理机制使程序正常运行。
参考代码:
import java.util.*;
public class Ex12 {
public static void main(String[] args) {
int num1,num2;
Scanner in=new Scanner(System.in);
try {
num1=in.nextInt();
} catch (InputMismatchException e) {
System.out.println(“第一个数格式不对“);
num1=0;
}
try {
num2=in.nextInt();
} catch (InputMismatchException e) {
System.out.println(“第二个数格式不对“);
num2=0;
}
System.out.println(“num1-num2=”+(num1-num2));
}
}
9、自定义异常类,在进行减法运算时,当第一个数大于第二个数时,抛出“被减数不能小于减数”,并编写程序进行测试。
参考代码:
import java.util.Scanner;
//MyException类的定义(同第11题)
public class Ex13 {
public static void main(String[] args) {
int num1,num2;
Scanner scan=new Scanner(System.in);
num1=scan.nextInt();
num2=scan.nextInt();
try {
if(num1<num2)
throw new MyException(“被减数不能小于减数“);
} catch (MyException e) {
System.out.println(e);
}
}
}
10、将给定的字符串的大写编程小写 小写转换成大写
public class Test6 {
public static void main(String[] args) {
change("aAbBccadsawecsSACFSC");
}
public static void change(String s) {
char a = 'a';
char A = 'A';
char z = 'z';
char Z = 'Z';
StringBuffer sb = new StringBuffer();// 定义一个StringBuffer用于存放新的字符串
for (int i = 0; i < s.length(); i++) {// 按位转换字符串的字符
char ch = s.charAt(i);
if (A <= ch && ch <= Z) {// 该位字符若为A---Z之间则+32转换成小写
ch += 32;
sb.append(ch);
} else if (a <= ch && ch <= z) {// 该位字符若为a---z之间则-32转换成小写
ch -= 32;
sb.append(ch);
}
}
System.out.println(sb.toString());
}
}
11、控制台树形输出
import java.io.File;
public class ListFiles {
public static void main(String[] args) {
File f = new File("d:/kh");
System.out.println(f.getName());
tree(f, 1);
}
private static void tree(File f, int level) {
String preStr = "";
for (int i = 0; i < level; i++) {
preStr += " ";
}
File[] childs = f.listFiles();
for (int i = 0; i < childs.length; i++) {
System.out.println(preStr + childs[i].getName());
if (childs[i].isDirectory()) {
tree(childs[i], level + 1);
}
}
}
}