用java实现求前一天,用读取文件的方式读取当前时间 首先创建一个time.txt
1996-3-1
1997-3-1
2005-11-10
2010-9-8
然后创建一个文件读取类和一个键值对包装类(好吧,这个后来没用上因为发现不需要序号这个东西)
package file;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class fileread {
public static ArrayList<intKeyStrValue> readFileByLines(String fileName) {
File file = new File(fileName);
ArrayList<intKeyStrValue> List = new ArrayList();
BufferedReader reader = null;
try {
//System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
//System.out.println("line " + line + ": " + tempString);
List.add(new intKeyStrValue(line,tempString));
line++;
}
return List;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return List;
}
}
接下来是键值对
package file;
public class intKeyStrValue {
public int number;
public String value;
public intKeyStrValue(int num,String val)
{
number=num;
value=val;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
最后是主函数
import java.util.ArrayList;
import file.fileread;
import file.intKeyStrValue;
public class Main {
public static void main(String[] args) {
fileread m=new fileread();
ArrayList<intKeyStrValue> List = new ArrayList();
List=fileread.readFileByLines("/home/kalaer/workspace/perday/appClientModule/time.txt");
for (int i = 0; i < List.size(); i++) {
String pre=PreDay(List.get(i).getValue());
System.out.println(List.get(i).getNumber()+" "+List.get(i).getValue()+" pre day is "+pre);
}
}
public static String PreDay(String date)
{
int isleep=0;
int isbig=0;
int tmpyear = 0;
int tmpmouth=0;
int tmpday=0;
int[] bigmouth= {1,3,5,7,8,10,12};
String[] names = date.split("\\-");
for (int i = 0; i < names.length; i++) {
if(inteager(names[0])%4==0 && inteager(names[0])%100 !=0 ||inteager(names[0])%400 ==0)
{
isleep=1;
}
else
{
isleep=0;
}
for(int i1=0;i1<bigmouth.length;i1++)
{
if(bigmouth[i1]==inteager(names[1]))
{
isbig=1;
}
else
{
isbig=0;
}
}
if(inteager(names[2])==1)
{
if(inteager(names[1])==3)
{
if(isleep==1)
{
tmpyear=inteager(names[0]);
tmpmouth=inteager(names[1])-1;
tmpday=29;
}
else
{
tmpyear=inteager(names[0]);
tmpmouth=inteager(names[1])-1;
tmpday=28;
}
}
else
{
if(isbig==1)
{
tmpyear=inteager(names[0]);
tmpmouth=inteager(names[1])-1;
tmpday=31;
}
else
{
tmpyear=inteager(names[0]);
tmpmouth=inteager(names[1])-1;
tmpday=30;
}
}
}
else
{
tmpyear=inteager(names[0]);
tmpmouth=inteager(names[1]);
tmpday=inteager(names[2])-1;
}
}
return toString(tmpyear)+"-"+toString(tmpmouth)+"-"+toString(tmpday);
}
private static String toString(int tmp) {
// TODO Auto-generated method stub
return String.valueOf(tmp);
}
private static int inteager(String string) {
// TODO Auto-generated method stub
return Integer.parseInt(string);
}
}
为了以后方便代码重用,还是养成经常包装类写函数的好习惯吧