1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
第二题主要用subString
第二问 你都说了, 用substring , 你就自己截取贝, 从第几个开始截取几个 不就完了
如果今天是2009-03-01,那么二月份的最后一天该怎么算?
1、写一个函数 String getYesterday(String today){},只可以重要String基本类 不可以用data工具类
输入一个时间比如说20080101,应该得到20071231,不去计较数据验证。
2、解析字符串,String getStr1(String Str,String flag),第一个参数指要输入的字符串,第二个代表要拆分的标志,比如说333113223zz,得到的应该是‘11’、‘22’,‘zz’。不可以用spli。
第二个就是说输入两个参数,以第一个是字符处比如“123a321aaa44”,第二个参数输入a,要得到“123”、“32”、“44”
public static String[] liu_split(String strInfo, String strSplit) { int size = 0;
int index = 0;
do {
size++;
index++;
index = strInfo.indexOf(strSplit, index);
} while (index != -1);
String[] arrRtn = new String[size]; int startIndex = 0;
int endIndex = 0;
for (int i = 0; i < size; i++) {
endIndex = strInfo.indexOf(strSplit, startIndex);
if (endIndex == -1) {
arrRtn[i] = strInfo.substring(startIndex);
} else {
arrRtn[i] = strInfo.substring(startIndex, endIndex);
}
startIndex = endIndex + 1;
}
return arrRtn;
}
}
使用截取字符串的方法搞定。多做两次判断。具体做法可以参考9楼。不过感觉9楼的方法还有待补充。
public static void main(String[] args) {
String s = "20090301";
System.out.println(getYesterday(s));
}
public static String getYesterday(String yesterday) {
String returnStr = "";
int year = 0;
int month = 0;
int day = 0;
year = Integer.parseInt(yesterday.substring(0, 4));
month = Integer.parseInt(yesterday.substring(4, 6));
day = Integer.parseInt(yesterday.substring(6, 8));
if(day != 1) {
day = day - 1;
} else {
switch(month) {
case 5:
case 7:
case 10:
case 12:
month = month - 1;
day = 30;
break;
case 1:
year = year - 1;
month = 12;
day = 30;
break;
case 3:
if(isLeapYear(year)) {
month = month - 1;
day = 29;
break;
} else {
month = month - 1;
day = 28;
break;
}
default:
month = month - 1;
day = 31;
break;
}
}
returnStr = "" + year + String.format("%02d", month) + String.format("%02d", day);
return returnStr;
}
public static boolean isLeapYear(int year) {
boolean b = false;
if(year % 400 == 0) {
b = true;
}
if((year % 4 == 0) && (year % 100 != 0)) {
b = true;
}
return b;
}
}
public class Split {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("str=");
String str = sc.nextLine();
System.out.print("flag=");
String flag = sc.nextLine();
String[] resultStr = getStr1(str,flag);
if(resultStr == null)
{
System.out.println(str);
}
else
{
for(String s:resultStr)
{
System.out.print(s+" ");
}
}
}
public static String[] getStr1(String str,String flag)
{
int index = 0;
int backIndex = 0;
//用来确定String数组的长度
int size = 0;
int resultStrIndex = 0;
do {
size++;
index++;
index = str.indexOf(flag, index);
} while (index != -1);
String[] resultStr = new String[size];
while((index=str.indexOf(flag,backIndex))!=-1)
{
if(backIndex==index)
{
backIndex++;
}
else
{
resultStr[resultStrIndex++] = str.substring(backIndex, index);
backIndex = index ;
}
}
resultStr[resultStrIndex] = str.substring(backIndex);
return resultStr;
}
}
第二题: 如果只能用subString 你就一个一个字符取!匹配flag 就是了! 把不是flag 的连续的 char 列出来就可以了!如果可以正则表达式可以 免得那么麻烦
import java.util.Scanner;public class SplitDemo {
public static void main(String[] args){
System.out.print("Input a string: ");
Scanner scan = new Scanner(System.in);
String s = new String();
if(scan.hasNext()){
s = scan.next();
}
System.out.print("Input a param: ");
Scanner scan1 = new Scanner(System.in);
String param = new String();
if(scan1.hasNext()){
param = scan1.next();
}
SplitDemo sd = new SplitDemo();
ArrayList list = sd.divString(s, param);
for(int i=0 ; i<list.size() ; i++){
System.out.print(list.get(i)+" ");
}
}
ArrayList divString(String s,String param){
ArrayList<String> list = new ArrayList<String>();
int index = 0;
CharSequence c = param.subSequence(0, param.length());
while(s.contains(c)){
String str = s.substring(0, s.indexOf(param, index));
list.add(str);
s = s.substring(s.indexOf(param, index)+param.length());
}
list.add(s);
return list;
}
}