1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。2. 现有一个类person有三个属性,分别是name,age,sex。有一个List对象,保存了很多person对象的实例,请编写一个函数,对List里的实例进行排序。条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。3. 有一个水果箱(box),箱子里装有水果(fruit)。每一种水果都有不同的重量(weight)和颜色(color),水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),也可以取出水果(getFruit)。请编写java代码实现上述功能。4. 有一静态整形变量X,初始值为0,用JAVA写四个线程,二个对其加1,二个对其减一,X等于0时不进行减操作,X等于5时结束程序。5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七”。
要求:请考虑代码执行的效率并注意编码的风格。2. 现有一个类person有三个属性,分别是name,age,sex。有一个List对象,保存了很多person对象的实例,请编写一个函数,对List里的实例进行排序。条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。3. 有一个水果箱(box),箱子里装有水果(fruit)。每一种水果都有不同的重量(weight)和颜色(color),水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),也可以取出水果(getFruit)。请编写java代码实现上述功能。4. 有一静态整形变量X,初始值为0,用JAVA写四个线程,二个对其加1,二个对其减一,X等于0时不进行减操作,X等于5时结束程序。5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七”。
StringBuffer sb=new StringBuffer();
if(lowerNum>0&&lowerNum<Math.pow(10, 1)){
sb.append(getNum(lowerNum));
}
else if(lowerNum>=Math.pow(10, 1)&&lowerNum<Math.pow(10, 2)){
sb.append(getNum(lowerNum/10)).append(getUnit(String.valueOf(lowerNum).length()));
sb.append(changeUpper(lowerNum%10));
}else if(lowerNum>=Math.pow(10, 2)&&lowerNum<Math.pow(10, 3)){
int t=(int) Math.pow(10, 2);
sb.append(getNum(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 3)&&lowerNum<Math.pow(10,4)){
int t=(int) Math.pow(10, 3);
sb.append(getNum(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 4)&&lowerNum<Math.pow(10, 8)){
int t=(int) Math.pow(10, 4);
sb.append(changeUpper(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 8)){
int t=(int)Math.pow(10, 8);
sb.append(changeUpper(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else{
//sb.append("零");
}
return sb.toString();
}
private static String[] NUM={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static String getUnit(int i){
String unit="";
switch(i){
case 2 :unit=UNIT[0];break;
case 3 :unit=UNIT[1];break;
case 4 :unit=UNIT[2];break;
case 5 :unit=UNIT[3];break;
case 6 :unit=UNIT[3];break;
case 7 :unit=UNIT[3];break;
case 8 :unit=UNIT[3];break;
default:unit=UNIT[4];
}
return unit;
}
private static String getNum(int i){
return NUM[i];
}
package com.xuz.csdn.july11;public class FindLongRepert { public static void main(String[] args) {
String result = "aaaabbbbbbcccdddaa";
char[] array = result.toCharArray();
char ch = array[0];
char maxCh = 0;
int count = 1;
int maxCount = -1;
for (int i = 1; i < array.length ; i++) {
if (ch == array[i]) {
count++;
} else {
if (maxCount < count) {
maxCount = count;
maxCh = ch;
}
count = 1;
ch = array[i];
}
}
System.out.println(maxCh + " : " + maxCount);
}}
类似数据库的 order by sex desc,age desc,name desc ?
package com.xuz.csdn.july11;public class ThreadTest { static int i = 0;
static Object lock = new Object(); public static void main(String[] args) {
Thread th1 = new Thread(new AddThread(lock));
Thread th2 = new Thread(new AddThread(lock));
Thread th3 = new Thread(new SubThread(lock));
Thread th4 = new Thread(new SubThread(lock)); th1.start();
th2.start();
th3.start();
th4.start();
} static class AddThread implements Runnable {
Object lock; public AddThread(Object lock) {
this.lock = lock;
} @Override
public void run() {
while (true) {
if (i == 5) {
System.out.println(Thread.currentThread().getName()
+ " over");
return;
}
synchronized (lock) {
i++;
System.out.println(Thread.currentThread().getName() + " i++ = "
+ i);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
static class SubThread implements Runnable {
Object lock;
public SubThread(Object lock){
this.lock = lock;
}
@Override
public void run() {
while (true) {
if (i == 5) {
System.out.println(Thread.currentThread().getName()
+ " over");
return;
}
synchronized (lock) {
if (i != 0) {
i--;
}
System.out.println(Thread.currentThread().getName() + " i-- = "
+ i);
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
String str = null;
String [] strunit = {"拾","百","千","万","亿","兆"};
String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] s = new String[2] ;
String [] stname = {"角","分","厘"};
static StringBuffer sf = new StringBuffer();
NumToChinise(int str)
{
this.str = str+"";
}
public void Chinise(String[] strby){
//最多三个0 最多取四位
int tt = 0;
for(int i = 0 ; i < strby[0].length(); ){
if(Integer.parseInt(strby[0].substring(0,1)) == 0 ){
strby[0] = strby[0].toString().substring(1);
if(tt == 0 && strby[0].length() != 0 && Integer.parseInt(strby[0]) != 0){
//System.out.print(strnum[0]);
sf.append(strnum[0]);
tt = 1 ;
}
}else
{
//System.out.print(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
sf.append(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
if(strby[0].length()-2 >= 0){
sf.append(strunit[strby[0].length()-2]);
//System.out.print(strunit[strby[0].length()-2]);
}
strby[0] = strby[0].toString().substring(1);
tt = 0;
}
}
}
public StringBuffer tochinise5(String str)
{
String st[] = str.split("\\.");
//System.out.println(st.length);
for(int i = 0 ; i < st[0].length()&& st[0].length()<= 9; )
{
if(st[0].toString().length() < 5 )
{
Chinise(st);
sf.append("元");
//System.out.print("元");
}
if(st[0].toString().length() >= 5 && st[0].toString().length() <9)
{
s[0]= st[0].substring(0,st[0].toString().length() - 4);
Chinise(s);
//System.out.print("万");
sf.append("万");
st[0] = st[0].substring(st[0].toString().length() - 4);
}
if(st[0].toString().length() >= 9 && st[0].toString().length() <=12)
{
s[0]= st[0].substring(0,st[0].toString().length() - 8);
Chinise(s);
sf.append("亿");
//System.out.print("亿");
st[0] = st[0].substring(st[0].toString().length() - 8);
}
}
endTochinise(st);
return sf;
}
public void endTochinise(String[] endstr)
{
if(endstr.length>1){
int ss = 0;
endstr[1] = endstr[1].toString().substring(0,3);
for(int i=0 ; i < 3 ; i++)
{
if(Integer.parseInt(endstr[1].substring(0,1)) == 0 )
{
//System.out.print(endstr[1].toString().substring(0, 1)+stname[i]);
sf.append(endstr[1].toString().substring(0, 1)+stname[i]);
endstr[1] = endstr[1].toString().substring(1);
ss = 1;
}else
{
if(endstr[1].length()-1 >= 0){
//System.out.print(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
sf.append(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
}
endstr[1] = endstr[1].toString().substring(1);
ss = 0;
}
}
}
}
}
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/public class Test{
public static void main(String[] args){
String content = "aaaddxxxxddddxxxx";
getMaxLength(content);
} private static void getMaxLength(String content){
if(content == null || content.length() == 0){
throw new IllegalArgumentException("content is invalid.");
} String maxStr = null;
int maxCount = 0; String tempStr = null;
int tempCount = 0; while(content.length() != 0){
tempStr = content.substring(0,1); tempCount = content.length() - content.replaceAll(tempStr,"").length(); content = content.replaceAll(tempStr,""); if(tempCount > maxCount){
maxStr = tempStr;
maxCount = tempCount;
}
} System.out.println("maxStr: " + maxStr + " Total: " + maxCount);
}
}
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() > m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
public static String maxLength(String s){
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() >= m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
//编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七
import java.util.*;
public class Change{
public static void main(String [] args){
Scanner reader=new Scanner(System.in);
System.out.print("请输入一个整数(0~99999):");
String s=reader.nextLine();
char a[]=new char[s.length()];
String b[]={"万","千","百","十"," "};
System.out.println("您输入的整数为(0~99999):"+s);
System.out.print(s+"对应中文为:");
for(int i=0;i<s.length();i++){
a[i]=s.charAt(i);
switch(a[i]){
case '0':System.out.print("零");break;
case '1':System.out.print("壹");break;
case '2':System.out.print("贰");break;
case '3':System.out.print("叁");break;
case '4':System.out.print("肆");break;
case '5':System.out.print("伍");break;
case '6':System.out.print("陆");break;
case '7':System.out.print("柒");break;
case '8':System.out.print("捌");break;
case '9':System.out.print("玖");break;
default:System.out.print("输入错误!");
}
switch(s.length()){
case 1:break;
case 2:System.out.print(b[i+3]);break;
case 3:System.out.print(b[i+2]);break;
case 4:System.out.print(b[i+1]);break;
case 5:System.out.print(b[i]);break;
}
}
System.out.println();
}
}
int []v_k=new int['z'];
for(int i=0;i<a.length();i++){
v_k[a.charAt(i)]++;
}
int max=0;
int index=0;
for(int i=0;i<v_k.length;i++){
if(max<v_k[i]){
max=v_k[i];
index=i;
}
}
System.out.println(((char)index)+" "+max);
public class Fruit {
private int weight;
private Color color;
public Fruit(){
}
public int getWeight() {
return weight;
}
protected void setWeight(int weight) {
this.weight = weight;
}
public Color getColor() {
return color;
}
protected void setColor(Color color) {
this.color = color;
}
public String toString(){
return "This is a "+color.toString()+" "+this.getClass().getSimpleName()+" its weight is "+weight;
}
}
public class Apple extends Fruit {
public Apple(int weight, Color color){
super();
this.setWeight(weight);
this.setColor(color);
}}
public class Pear extends Fruit {
public Pear(int weight, Color color){
super();
this.setWeight(weight);
this.setColor(color);
}
}
public enum Color {
GREEN, RED, YELLOW;
}public class FruitBox {
private List<Fruit> fruits;
public int size;
public FruitBox(){
fruits = new ArrayList<Fruit>();
}
public void addFruit(Fruit fruit){
this.fruits.add(fruit);
size++;
}
public Fruit getFruit(int index){
return this.fruits.get(index);
}
public static void main(String[] args){
FruitBox fruitbox = new FruitBox();
fruitbox.addFruit(new Apple(10, Color.GREEN));
fruitbox.addFruit(new Pear(15, Color.YELLOW));
fruitbox.addFruit(new Apple(13, Color.RED));
for (int i =0;i < fruitbox.size; i++){
System.out.println(fruitbox.getFruit(i).toString());
}
}
}
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730495.aspx
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx
package Test;import java.util.Scanner;public class Demo5 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
show();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}}
5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,
没有小数。例:输入“3587”,返回“三千伍百八十七”。
*///package com.ricky.www;import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;public class Test{ public static void main(String[] args){
System.out.println("Input a number[0 - 99999]: ");
Scanner keyboard = new Scanner(System.in);
String content = keyboard.nextLine();
printValue(content);
} private static boolean isValid(String content){
//有效性判断.
int num = 0;
try{ num = Integer.valueOf(content); }catch(NumberFormatException e){
System.err.println("'content = " + content +
" ' is not a valid number.");
return false;
}
if(content.length() > 5){
System.err.println("The number is " +
"input is invalid. arange[1 - 99999]");
return false;
} if(content.indexOf("0") == 0){
System.err.println("'content = " + content +
" ' is not a valid number.");
return false;
} return true; } private static String printValue(String content){
if(!isValid(content)){
return null;
} //壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、萬
String nums[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String sign[] = {"拾","佰","仟","萬"}; content = content.replaceAll("(?<=\\d)(?=\\d)",",");//用,分隔数字 String temp = content.replaceAll("(,0)*$","");//去除最后的零的部分 int gaps = temp.length() == content.length() ? temp.length() : temp.length() + 1;
String regex = "(.*),(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content); int i = 0;
while(matcher.find()){
//将修饰符加上去
content = matcher.group(1) + sign[i ++] + matcher.group(2);
matcher = pattern.matcher(content);
} content = content.substring(0,gaps);//截取有效长度
content = content.replaceAll("0.","零");//将诸如 1024 中的 0 进行处理 for(i = 1 ; i <= 9 ; i ++){
content = content.replaceAll("" + i,nums[i]);//将数字转为中文
} System.out.println(content);
return content;
}
}
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*///package com.ricky.www;public class Test{
public static void main(String[] args){
String content = "aaaddxxxxddddxxxx";
int max = 0;
String result = null; String after = null;
int count = 0;
while(content.length() != 0){
after = content.replaceAll("^(\\w)\\1*","");
count = content.length() - after.length();
if(count > max){
max = count;
result = content.substring(0,1);
}
content = after;
} System.out.println(result + " , " + max);
}
}
2. 现有一个类person有三个属性,分别是name,age,sex。
有一个List对象,保存了很多person对象的实例,
请编写一个函数,对List里的实例进行排序。
条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。
*///package com.ricky.www;import java.util.ArrayList;
import java.util.Collections;public class Test{
public static void main(String[] args){
Person p1 = new Person("ricky",23,"B");
Person p2 = new Person("boy",15,"B");
Person p3 = new Person("girl",16,"G");
Person p4 = new Person("jennie",22,"G"); ArrayList<Person> list = new ArrayList<Person>(); list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4); Person.setCompareSign(Person.NAME);//通过name来排序
Collections.sort(list);
print(list); System.out.println("-----------------------------------------"); Person.setCompareSign(Person.AGE);//通过age来排序
Collections.sort(list);
print(list); System.out.println("-----------------------------------------"); Person.setCompareSign(Person.SEX);//通过sex来排序
Collections.sort(list);
print(list); } public static void print(ArrayList<Person> list){
for(Person p : list){
System.out.println(p);
}
}
//----------------------------------------- private static class Person implements Comparable<Person>{
private static int sign = 3; private final static int NAME = 1;
private final static int AGE = 2;
private final static int SEX = 3; public Person(){ // default constructor
} public Person(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
} public static void setCompareSign(int signValue){
//sign only can choose NAME , AGE or SEX
if((sign != NAME) && (sign != AGE) && (sign != SEX)){
throw new IllegalArgumentException(sign + " is invalid.");
}
sign = signValue;
} public int compareTo(Person p){ if(sign == NAME){
return this.name.compareTo(p.name);
}else if(sign == AGE){
return age - p.age;
} return this.sex.compareTo(p.sex);
} public String getName(){
return name;
} public int getAge(){
return age;
} public String getSex(){
return sex;
} public String toString(){
return "name: " + name + " age: " + age + " sex: " + sex;
} String name;
int age;
String sex;
}
}
3. 有一个水果箱(box),箱子里装有水果(fruit)。
每一种水果都有不同的重量(weight)和颜色(color),
水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),
也可以取出水果(getFruit)。请编写java代码实现上述功能。
*///package com.ricky.www;import java.util.ArrayList;public class Test{ public static void main(String[] args){ FruitBox box = new FruitBox(); Fruit[] fruits = {
new Apple(0.6,"RED"),
new Pear(0.5,"YELLOW"),
new Apple(0.8,"GREEN")
}; for(Fruit f : fruits){
box.addFruit(f);
} box.toString(); box.getFruit(); box.toString();
} private static abstract class Fruit{
public double weight;
public String color;
public Fruit(double weight,String color){
this.weight = weight;
this.color = color;
} public abstract String toString();
} public static class Apple extends Fruit{ public Apple(double weight,String color){
super(weight,color);
} public String toString(){
return "apple:[weight=" + weight + ",color=" + color + "].";
}
} public static class Pear extends Fruit{ public Pear(double weight,String color){
super(weight,color);
} public String toString(){
return "pear:[weight=" + weight + ",color=" + color + "].";
}
} private static class FruitBox{ ArrayList<Fruit> list = new ArrayList<Fruit>(); public void addFruit(Fruit fruit){
list.add(fruit);
} public void addFruit(int index , Fruit fruit){
list.add(index,fruit);
} public Fruit getFruit(){
return list.remove(0);
} public Fruit getFruit(int i){
return list.remove(i);
} public String toString(){
for(Fruit f : list){
System.out.println(f);
} System.out.println("------------------------"); return null;
}
}
}
第四题(modify方法)第五题(show方法)
package Test;import java.util.Scanner;public class Demo5 { private static int x = 0; private static boolean flag=true;
public static void main(String[] args) {
modify();
}
public static void modify() {
Thread t1 = new Thread(){
@Override
public void run() {
while(flag) {
x-=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t2 = new Thread() {
@Override
public void run() {
while(flag) {
x-=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t3 = new Thread(){
@Override
public void run() {
while(flag) {
x+=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t4 = new Thread(){
@Override
public void run() {
while(flag) {
x+=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
t1.start();
t2.start();
t3.start();
t4.start();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}
[code]
public int compareTo(Person target){
if(this.age <= 18){
if(target.age <= 18){
return 0;
}else{
return 11;
}
}else{
if(target.age <= 18){
return -1;
}else{
if(this.gender.compareTo(target.gender) == 0 && this.age.compareTo(target.age) == 0){
return target.name.compareTo(this.getName());
}
if(this.getGender().compareTo(target.getGender()) == 0){
return target.getAge().compareTo(this.getAge());
}
}
}
return target.getGender().compareTo(this.getGender());
}
[/code]
public int compareTo(Person target){
if(this.age <= 18){
if(target.age <= 18){
return 0;
}else{
return 11;
}
}else{
if(target.age <= 18){
return -1;
}else{
if(this.gender.compareTo(target.gender) == 0 && this.age.compareTo(target.age) == 0){
return target.name.compareTo(this.getName());
}
if(this.getGender().compareTo(target.getGender()) == 0){
return target.getAge().compareTo(this.getAge());
}
}
}
return target.getGender().compareTo(this.getGender());
}
[\code]
public int compareTo(Person target){
if(this.age <= 18){
if(target.age <= 18){
return 0;
}else{
return 11;
}
}else{
if(target.age <= 18){
return -1;
}else{
if(this.gender.compareTo(target.gender) == 0 && this.age.compareTo(target.age) == 0){
return target.name.compareTo(this.getName());
}
if(this.getGender().compareTo(target.getGender()) == 0){
return target.getAge().compareTo(this.getAge());
}
}
}
return target.getGender().compareTo(this.getGender());
}
</code>
用+的效果是两个及两个以上,没重复出现的排除在外了,减少了while (m.find())的次数,用*也能得到正确的结果。
如果是写代码 ,在什么环境下写,(给你一台电脑 ,给不给api ,或者 IDE工具,不会搞得跟应试考试吧,只有一个记事本)
public class FindCharMoreTimes { public static void main(String[] args) {
String s = "aaaaaddxxxxdddvvvvvvvvvvvvvvvvvvvvddxxxx";
Pattern p = Pattern.compile("(.)\\1+");
Matcher m = p.matcher(s);
int max = 0;
char c = ' ';
while (m.find()) {
if (max < m.group(0).length()) {
max = m.group(0).length();
c = m.group(0).charAt(0);
}
} System.out.println("字母:" + c + " " + "次数:" + max); }}
public static void main (String args[]){
Modifymult m1=new Modifymult();
Modifyadd m2=new Modifyadd();
Modifymult m3=new Modifymult();
Modifyadd m4=new Modifyadd();
new Thread(m1).start();
new Thread(m2).start();
new Thread(m3).start();
new Thread(m4).start();
}}class Modifymult implements Runnable{
static int i=0; boolean flag =false;
static String str ="";
public synchronized void run(){
synchronized (str){
while (!flag)
{i=i-1;
if (i==5)
{flag =true;
System.out.println(i); System.exit(0);
}
}
}
}
}class Modifyadd implements Runnable{
boolean flag =false;
static int p=0;
public void run (){
synchronized (Modifymult.str){
while (!flag){
p=Modifymult.i;
if (p==5){
System.out.println(Modifymult.i);
flag=true;System.exit(0);
}
else
{
p++;
Modifymult.i=p;
}
}
}
}
}
五楼程序for循环运行到尾的时候就不可能发生else语句(在倒数第一个字母和倒数第二个字母相同的情况下)所以得对循环到尾进行处理。
public class FindLongRepert { public static void main(String[] args) {
String result = "aaabbbbbfdddddddvvdsfbfdvfdnnnnnnnnnnnnn";
char[] array = result.toCharArray();
char ch = array[0];
char maxCh = 0;
int count = 1;
int maxCount = -1;
for (int i = 1; i < array.length ; i++) {
if (ch == array[i]) {
count++;
} else {
if (maxCount < count) {
maxCount = count;
maxCh = ch;
}
count = 1;
ch = array[i];
}
if (i==array.length-1){
if (maxCount < count) {
maxCount = count;
maxCh = ch;}
}
}
System.out.println(maxCh + " : " + maxCount);
}}
/**
* 将double型的金额数转换为人民币大写
*
* @param 金额
* @return 人民币大写
*/
public static String changeToBig(double value) {
boolean minus = false;
if (value == 0) {
return "零圆整";
}
if (value < 0) {
value = Math.abs(value);
minus = true;
}
char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示
char[] vunit = { '万', '亿', '兆' }; // 段名表示
char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 数字表示
BigDecimal midVal = new BigDecimal(Math.round(value * 100)); // 转化成整形
String valStr = String.valueOf(midVal); // 转化成字符串
if(valStr.length() < 2){
valStr = "0" + valStr;
}
String head = valStr.substring(0, valStr.length() - 2); // 取整数部分
String rail = valStr.substring(valStr.length() - 2); // 取小数部分 String prefix = ""; // 整数部分转化的结果
String suffix = ""; // 小数部分转化的结果
// 处理小数点后面的数
if (rail.equals("00")) { // 如果小数部分为0
suffix = "整";
} else {
suffix = digit[rail.charAt(0) - '0'] + "角"
+ digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来
}
// 处理小数点前面的数
char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组
boolean preZero = false; // 标志当前位的上一位是否为有效0位(如万位的0对千位无效)
byte zeroSerNum = 0; // 连续出现0的次数
for (int i = 0; i < chDig.length; i++) { // 循环处理每个数字
int idx = (chDig.length - i - 1) % 4; // 取段内位置
int vidx = (chDig.length - i - 1) / 4; // 取段位置
if (chDig[i] == '0') { // 如果当前字符是0
preZero = true;
zeroSerNum++; // 连续0次数递增
if ((idx == 0) && (vidx > 0) && (zeroSerNum < 4)) {
prefix += vunit[vidx - 1];
preZero = false; // 不管上一位是否为0,置为无效0位
}
} else {
zeroSerNum = 0; // 连续0次数清零
if (preZero) { // 上一位为有效0位
prefix += digit[0]; // 只有在这地方用到'零'
preZero = false;
}
prefix += digit[chDig[i] - '0']; // 转化该数字表示
if (idx > 0) {
prefix += hunit[idx - 1];
}
if ((idx == 0) && (vidx > 0)) {
prefix += vunit[vidx - 1]; // 段结束位置应该加上段名如万,亿
}
}
}
if (prefix.length() > 0) {
prefix += '圆'; // 如果整数部分存在,则有圆的字样
}
if (minus) {
prefix = "负 " + prefix;
}
return prefix + suffix; //返回正确表示
}
一个英文的,一个翻译的:
http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=255
http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=255
return new java.util.Comparator() { public int compare(Object o1, Object o2) {
if (o1 instanceof String) {
return compare((String) o1, (String) o2);
} else if (o1 instanceof Integer) {
return compare((Integer) o1, (Integer) o2);
} else if (o1 instanceof Person) {
return compare((Person) o1, (Person) o2);
} else {
System.err.println("未找到合适的比较器");
return 1; }
} public int compare(String o1, String o2) {
String s1 = (String) o1;
String s2 = (String) o2;
int len1 = s1.length();
int len2 = s2.length();
int n = Math.min(len1, len2);
char v1[] = s1.toCharArray();
char v2[] = s2.toCharArray();
int pos = 0; while (n-- != 0) {
char c1 = v1[pos];
char c2 = v2[pos];
if (c1 != c2) {
return c1 - c2;
}
pos++;
}
return len1 - len2;
} public int compare(Integer o1, Integer o2) {
int val1 = o1.intValue();
int val2 = o2.intValue();
return (val1 < val2 ? -1 : (val1 == val2 ? 0 : 1));
} public int compare(Boolean o1, Boolean o2) { return (o1.equals(o2) ? 0
: (o1.booleanValue() == true ? 1 : -1)); } public int compare(Person o1, Person o2) {
String firstname1 = o1.getFirstName();
String firstname2 = o2.getFirstName();
String lastname1 = o1.getLastName();
String lastname2 = o2.getLastName();
Boolean sex1 = o1.getSex();
Boolean sex2 = o2.getSex();
Integer age1 = o1.getAge();
Integer age2 = o2.getAge();
return (compare(firstname1, firstname2) == 0 ? (compare(
lastname1, lastname2) == 0 ? (compare(sex1, sex2) == 0 ? (compare(
age1, age2) == 0 ? 0 : compare(age1, age2))
: compare(sex1, sex2))
: compare(lastname1, lastname2))
: compare(firstname1, firstname2)); } };
}
}
public String convert(int param){
String[] strArr = new String[]{"个","十","百","千","万"};
String[] numStr = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
StringBuffer sf = new StringBuffer();
boolean b = false;
for(int i=(param+"").length()-1;i>=0;i--){
String temp = (param+"").substring((param+"").length()-1-i, (param+"").length()-i);
if("0".equals(temp)){
if(b){
continue;
}
b = true;
sf.append(numStr[Integer.parseInt(temp)]);
}else{
b = false;
sf.append(numStr[Integer.parseInt(temp)]).append(strArr[i]);
}
}
String re = sf.toString();
re = re.substring(0,re.length()-1);
return re;
}
public static String maxLength(String value) {
char result = 0;
char valueTmp = 0 ;
int maxLength = 0;
int lengthTmp = 1;
char[] values = value.toCharArray();
if (null == value || value.equals("")) {
return "input error!";
}
for (int i = 0; i < values.length ; i++) {
if (valueTmp != values[i]) { if (lengthTmp > maxLength) {
result = valueTmp;
maxLength = lengthTmp;
}
valueTmp = values[i];
lengthTmp = 1;
} else {
lengthTmp ++;
}
if (lengthTmp > maxLength && i == values.length-1) {
result = valueTmp;
maxLength = lengthTmp;
}
}
return result+":"+maxLength;
}