字符串相关的编程

字符串相关:

将一个句子的单词反过来(单词原样),比如"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写一个函数,个参数,个字符串,个字节数,返回截取的字符串,要求字符串中的中文不能出现乱码:如(ABC4)应该截为AB,输入(ABC DEF6)应该输出为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);

}

}

}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FairyTale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值