Java编程,求字符串的长度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程,求字符串的长度相关的知识,希望对你有一定的参考价值。
- 首先打开my eclipse
新建一个java项目,名字随意起
名字起好后,点击完成
右键点击项目名称,新建,类
类的名字叫TextLength
包的名字叫 com.zf.s2,点击完成判断是否是汉字
int chineseCount=0;
if(!"".equals(""))//判断是否为空
s=new String(s.getBytes(),"GBK"); //进行统一编码
for(int i=0;i<s.length();i++)//for循环
c=s.charAt(i); //获得字符串中的每个字符
if(isChineseChar(c))//调用方法进行判断是否是汉字
chineseCount++; //等同于chineseCount=chineseCount+1
return chineseCount; //返回汉字个数
获得字母、数字、空格的个数
public static String getStringInfo(String s)
char ch;
int character=0,blank=0,number=0;
for(int i=0;i <s.length();i++) //for循环
ch=s.charAt(i);
if((ch>=\'a\'&&ch <=\'z\')||(ch>=\'A\'&&ch <=\'Z\'))//统计字母
character++; //等同于character=character+1
else if(ch==\' \') //统计空格
blank++; //等同于blank=blank+1
else if(ch>=\'0\'&& ch <=\'9\') //统计数字
number++; //等同于number=number+1;
完整代码
package com.zf.s2;//创建一个包
public class TextLength //描述字符串长度的类
public static boolean isChineseChar(char c) throws Exception//判断是否是一个汉字
return String.valueOf(c).getBytes("GBK").length>1;//汉字的字节数大于1
public static int getChineseCount(String s) throws Exception//获得汉字的长度
char c;
int chineseCount=0;
if(!"".equals(""))//判断是否为空
s=new String(s.getBytes(),"GBK"); //进行统一编码
for(int i=0;i<s.length();i++)//for循环
c=s.charAt(i); //获得字符串中的每个字符
if(isChineseChar(c))//调用方法进行判断是否是汉字
chineseCount++; //等同于chineseCount=chineseCount+1
return chineseCount; //返回汉字个数
public static String getStringInfo(String s)//获得字母、数字、空格的个数
char ch;
int character=0,blank=0,number=0;
for(int i=0;i <s.length();i++) //for循环
ch=s.charAt(i);
if((ch>=\'a\'&&ch <=\'z\')||(ch>=\'A\'&&ch <=\'Z\'))//统计字母
character++; //等同于character=character+1
else if(ch==\' \') //统计空格
blank++; //等同于blank=blank+1
else if(ch>=\'0\'&& ch <=\'9\') //统计数字
number++; //等同于number=number+1;
return "字符串中共有"+character+"个字母,"+blank+"个空格,"+number+"个数字";
public static void main(String []args) throws Exception //java程序的主入口方法
String s="hello world 世界你好!!123*";
System.out.println("字符串的总长度:"+s.length());//显示字符串长度
System.out.println("字符串中汉字长度:"+getChineseCount(s)); //调用方法显示汉字长度
System.out.println(getStringInfo(s)); //调用方法显示其它字母类型的长度
len.length();//返回值为int类型,查一下API就好了。 参考技术B public int getWordCount(String s)
int length = 0;
for(int i = 0; i < s.length(); i++)
int ascii = Character.codePointAt(s, i);
if(ascii >= 0 && ascii <=255)
length++;
else
length += 2;
return length;
参考技术C String str="hi";
int t=str.length();
system.out.println(t); 参考技术D length()方法
String str = "hello";
system.out.println(str.length());
求两个大整数相乘的积,数字长度在127个字符之内。
计算两个大整数相乘的结果,数字不是double类型能表示的,数字长度没有限制(最大127位)。
方法一:使用java中的大整数处理库函数,java.math.BigInteger,java.math.BigDecimal;
方法二:不利用库函数,自己实现其功能,可以练习自己对待复杂问题的处理能力,提高编程水平。
此代码中利于两者的结合,利于库函数可以看自己编写的代码的正确性。
1、主函数
import java.math.BigDecimal; import java.util.Scanner; public class Big_multip { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int i=10; while(i>1){ System.out.print("输入第一个数:"); String s1=sc.next(); System.out.print("输入第二个数:"); String s2=sc.next(); String s4=send(s1,s2); System.out.println("计算结果是:"+s4); System.out.println("正确结果: "+ku_big(s1,s2)); --i; } sc.close(); };
2、对输入数据的第一步处理,分发处理代码
public static String send(String s1,String s2){ if(!(check(s1)&&check(s2))) return "输入有非法字符"; s1=take_head_zero(s1); s2=take_head_zero(s2); String str=multiply_first(s1,s2); str=take_head_zero(str); return str; };
3、处理相乘的第一步
public static String multiply_first(String s1,String s2){ int len2=s2.length(),a=0; String str="0"; for(int i=0;i<len2;++i) { a=s2.charAt(len2-1-i)-‘0‘; String sa=null; if(a!=0) { sa=multiply_one(s1,a); for(int j=0;j<i;++j) sa=sa+"0"; str=integer_add(sa,str); } } return str; };
4、计算纯数字字符串乘以每个数字(个位数字)的结果
public static String multiply_one(String s,int a){ int len=s.length(),k=0,before=0,kk=0; String str=""; for(int i=1;i<=len;++i) /*从最低位(即下标最大)处开始算*/ { k=(s.charAt(len-i)-‘0‘)*a+before; before=k/10; k=k%10; str=k+str; kk=1; } if(kk==0) str="0"; else if(before>0) str=before+str; return str; };
5、两个纯数字相加代码
public static String integer_add(String s1,String s2){ /*传递的时候已经确定第一个参数s1为最长字符串,s2为短字符串。*/ if(s1.length()<s2.length()) { String temp=s1; s1=s2; s2=temp; } int len1=s1.length(),len2=s2.length(); int a,temp=0; String str=""; for(int i=1;i<=len1;++i) /*注意开始i=1,结束时i==len1,因为前面i是从1开始,后面结束要多算一位*/ { if(i<=len2) a=temp+(s1.charAt(len1-i)-‘0‘)+(s2.charAt(len2-i)-‘0‘); else a=temp+(s1.charAt(len1-i)-‘0‘); temp=a/10; a=a%10; str=a+str; } if(temp!=0) str=temp+str; /*消除最前面的数字0*/ str=take_head_zero(str); return str; };
6、对于纯数字,剔除前面多余的零
/*剔除前面多余的数字0.*/ public static String take_head_zero(String s){ int len=s.length(),i=0; while(i<len) { if(s.charAt(i)==‘0‘) ++i; else break; } if(i<len) s=s.substring(i); else s="0"; return s; };
7、检查输入的字符串是否有非法的字符
public static boolean check(String s){ int k=0; for(int i=0;i<s.length();++i) { if(s.charAt(i)<=‘9‘&&s.charAt(i)>=‘0‘) { if(s.charAt(i)==‘.‘) { ++k; if(k>=2) return false; } } else return false; } return true; };
8、调用库函数就两个长纯数字的积,为了验证自己编写的代码计算结果是否正确。
public static String ku_big(String s1,String s2){ BigDecimal b1; BigDecimal b2; BigDecimal b=new BigDecimal("0"); try{ b1=new BigDecimal(s1); b2=new BigDecimal(s2); b=b1.multiply(b2); }catch(NumberFormatException e){ //System.out.println(e); return "输入有非法字符"; } return b.toString(); };
999、下面是整个程序的完整代码(此代码仅仅参考,若有bug希望共勉。)
/*两个长数字相乘*/ import java.math.BigDecimal; import java.util.Scanner; public class Big_multip { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int i=10; while(i>1){ System.out.print("输入第一个数:"); String s1=sc.next(); System.out.print("输入第二个数:"); String s2=sc.next(); String s4=send(s1,s2); System.out.println("计算结果是:"+s4); System.out.println("正确结果: "+ku_big(s1,s2)); --i; } sc.close(); }; public static String send(String s1,String s2){ if(!(check(s1)&&check(s2))) return "输入有非法字符"; s1=take_head_zero(s1); s2=take_head_zero(s2); String str=multiply_first(s1,s2); str=take_head_zero(str); return str; }; public static String multiply_first(String s1,String s2){ int len2=s2.length(),a=0; String str="0"; for(int i=0;i<len2;++i) { a=s2.charAt(len2-1-i)-‘0‘; String sa=null; if(a!=0) { sa=multiply_one(s1,a); for(int j=0;j<i;++j) sa=sa+"0"; str=integer_add(sa,str); } } return str; }; public static String multiply_one(String s,int a){ int len=s.length(),k=0,before=0,kk=0; String str=""; for(int i=1;i<=len;++i) /*从最低位(即下标最大)处开始算*/ { k=(s.charAt(len-i)-‘0‘)*a+before; before=k/10; k=k%10; str=k+str; kk=1; } if(kk==0) str="0"; else if(before>0) str=before+str; return str; }; public static String integer_add(String s1,String s2){ /*传递的时候已经确定第一个参数s1为最长字符串,s2为短字符串。*/ if(s1.length()<s2.length()) { String temp=s1; s1=s2; s2=temp; } int len1=s1.length(),len2=s2.length(); int a,temp=0; String str=""; for(int i=1;i<=len1;++i) /*注意开始i=1,结束时i==len1,因为前面i是从1开始,后面结束要多算一位*/ { if(i<=len2) a=temp+(s1.charAt(len1-i)-‘0‘)+(s2.charAt(len2-i)-‘0‘); else a=temp+(s1.charAt(len1-i)-‘0‘); temp=a/10; a=a%10; str=a+str; } if(temp!=0) str=temp+str; /*消除最前面的数字0*/ str=take_head_zero(str); return str; }; /*剔除前面多余的数字0.*/ public static String take_head_zero(String s){ int len=s.length(),i=0; while(i<len) { if(s.charAt(i)==‘0‘) ++i; else break; } if(i<len) s=s.substring(i); else s="0"; return s; }; public static boolean check(String s){ int k=0; for(int i=0;i<s.length();++i) { if(s.charAt(i)<=‘9‘&&s.charAt(i)>=‘0‘) { if(s.charAt(i)==‘.‘) { ++k; if(k>=2) return false; } } else return false; } return true; }; public static String ku_big(String s1,String s2){ BigDecimal b1; BigDecimal b2; BigDecimal b=new BigDecimal("0"); try{ b1=new BigDecimal(s1); b2=new BigDecimal(s2); b=b1.multiply(b2); }catch(NumberFormatException e){ //System.out.println(e); return "输入有非法字符"; } return b.toString(); }; }
以上是关于Java编程,求字符串的长度的主要内容,如果未能解决你的问题,请参考以下文章