Здравствуйте.Нужна помощь.Есть txt
файл с вот таким содержимым :
(тут расписание на каждый день 12-и месяцев).
1 7:01 8:39 8:54 13:20 16:21 18:03 19:39
2 7:02 8:39 8:54 13:20 16:22 18:03 19:40
3 7:02 8:40 8:54 13:21 16:23 18:04 19:41
4 7:02 8:40 8:54 13:21 16:23 18:05 19:42
5 7:02 8:40 8:54 13:22 16:24 18:06 19:42
6 7:02 8:40 8:54 13:22 16:25 18:07 19:43
7 7:02 8:39 8:54 13:23 16:26 18:08 19:44
8 7:02 8:39 8:54 13:23 16:27 18:09 19:45
9 7:02 8:39 8:54 13:24 16:28 18:10 19:46
10 7:02 8:39 8:54 13:24 16:29 18:11 19:47
11 7:02 8:39 8:53 13:24 16:30 18:12 19:48
12 7:02 8:39 8:53 13:25 16:31 18:13 19:49
13 7:02 8:38 8:53 13:25 16:32 18:14 19:49
14 7:01 8:38 8:52 13:25 16:33 18:15 19:50
15 7:01 8:38 8:52 13:26 16:34 18:16 19:51
16 7:01 8:37 8:51 13:26 16:36 18:17 19:52
17 7:01 8:37 8:51 13:27 16:37 18:18 19:53
18 7:00 8:36 8:50 13:27 16:38 18:20 19:54
19 7:00 8:36 8:50 13:27 16:39 18:21 19:55
20 7:00 8:35 8:49 13:27 16:40 18:22 19:56
21 6:59 8:35 8:49 13:28 16:41 18:23 19:57
22 6:59 8:34 8:48 13:28 16:42 18:24 19:58
23 6:58 8:33 8:47 13:28 16:44 18:25 19:59
24 6:58 8:33 8:47 13:29 16:45 18:27 20:00
25 6:57 8:32 8:46 13:29 16:46 18:28 20:01
26 6:57 8:31 8:45 13:29 16:47 18:29 20:02
27 6:56 8:30 8:44 13:29 16:48 18:30 20:03
28 6:55 8:29 8:43 13:29 16:49 18:31 20:04
29 6:55 8:29 8:42 13:30 16:51 18:33 20:05
30 6:54 8:28 8:42 13:30 16:52 18:34 20:07
31 6:53 8:27 8:41 13:30 16:53 18:35 20:08
1 6:52 8:26 8:40 13:30 16:54 18:36 20:09
2 6:52 8:25 8:39 13:30 16:55 18:37 20:10
3 6:51 8:24 8:38 13:30 16:57 18:39 20:11
4 6:50 8:23 8:37 13:30 16:58 18:40 20:12
5 6:49 8:22 8:36 13:31 16:59 18:41 20:13
6 6:48 8:21 8:34 13:31 17:00 18:42 20:14
7 6:47 8:20 8:33 13:31 17:01 18:44 20:15
8 6:46 8:19 8:32 13:31 17:02 18:45 20:16
9 6:45 8:17 8:31 13:31 17:04 18:46 20:17
10 6:44 8:16 8:30 13:31 17:05 18:47 20:18
11 6:43 8:15 8:29 13:31 17:06 18:48 20:19
12 6:42 8:14 8:27 13:31 17:07 18:50 20:20
13 6:41 8:13 8:26 13:31 17:08 18:51 20:22
14 6:40 8:11 8:25 13:31 17:09 18:52 20:23
15 6:39 8:10 8:23 13:31 17:10 18:53 20:24
16 6:37 8:09 8:22 13:31 17:11 18:54 20:25
17 6:36 8:08 8:21 13:31 17:13 18:56 20:26
18 6:35 8:06 8:19 13:31 17:14 18:57 20:27
19 6:34 8:05 8:18 13:30 17:15 18:58 20:28
20 6:32 8:03 8:17 13:30 17:16 18:59 20:29
21 6:31 8:02 8:15 13:30 17:17 19:00 20:30
22 6:30 8:01 8:14 13:30 17:18 19:02 20:31
23 6:28 7:59 8:12 13:30 17:19 19:03 20:32
24 6:27 7:58 8:11 13:30 17:20 19:04 20:34
25 6:26 7:56 8:09 13:30 17:21 19:05 20:35
26 6:24 7:55 8:08 13:30 17:22 19:06 20:36
27 6:23 7:53 8:06 13:29 17:23 19:07 20:37
28 6:21 7:52 8:05 13:29 17:24 19:08 20:38
29 6:20 7:50 8:03 13:29 17:25 19:10 20:39
Певый столбец это дни 12-и месяцев.Остальные 7 столбов это расписание на каждый день.И все это нужно перегнать в JSON
.Только первый и четвертый столбец из 8 нужно пропустить.JSON должен быть с такой структурой :
{
"month_1": {
"day_1": {
"lala": "16:21 ",
"lala2": "8:54 ",
"lala3": "7:01 ",
"lala4": "18:02 ",
"lala5": "13:20 ",
"lala6": "21:20 "
},
"day_2": {
"lala": "16:21 ",
"lala2": "8:54 ",
"lala3": "7:01 ",
"lala4": "18:02 ",
"lala5": "13:20 ",
"lala6": "21:20 "
},
И.Т.Д. дни до конца месяца
},
"month_2": {
"day_1": {
"lala": "16:21 ",
"lala2": "8:54 ",
"lala3": "7:01 ",
"lala4": "18:02 ",
"lala5": "13:20 ",
"lala6": "21:20 "
},
"day_2": {
"lala": "16:21 ",
"lala2": "8:54 ",
"lala3": "7:01 ",
"lala4": "18:02 ",
"lala5": "13:20 ",
"lala6": "21:20 "
},
И.Т.Д. дни до конца месяца
},
И.Т.Д. месяцы до конца ГОДА
}
Проблема у меня возникла с заполнением дней в месяцы.Каждый месяц заполняется только 7-и днями.Вот собственно код :
Метод который подбирает слова из одной строки и заполняет ими ArrayList:
static ArrayList mySubString(String s) {
int i = 0;
ArrayList<String> list= new ArrayList<String>();
for (int j = 0; j < s.length(); j++) {
if (s.charAt(j) == '\t') {
if (j > i) {
list.add(s.substring(i, j));
}
i = j + 1;
}
}
if (i < s.length()) {
list.add(s.substring(i));
}
list.remove(2);
return list;
}
И громадный main метод с одним while и с 12-ю if-ами для каждого месяца:
public static void main (String[] args) throws IOException {
InputStream inputStream = new FileInputStream("txtx.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String s ;
ArrayList<String> list = null;
//Главный json объект
JSONObject year = new JSONObject();
//json объекты для 12 месяцев.В каждом из них должны быть все его
//дни.
JSONObject month1 = new JSONObject();
JSONObject month2 = new JSONObject();
JSONObject month3 = new JSONObject();
JSONObject month4 = new JSONObject();
JSONObject month5 = new JSONObject();
JSONObject month6 = new JSONObject();
JSONObject month7 = new JSONObject();
JSONObject month8 = new JSONObject();
JSONObject month9 = new JSONObject();
JSONObject month10 = new JSONObject();
JSONObject month11 = new JSONObject();
JSONObject month12 = new JSONObject();
FileWriter file = null;
int crntRow=0;
while((s=bufferedReader.readLine())!=null){
list = mySubString(s);
//Число 32 это номер строки txt файла до которого должна
//сработать код внутри if-а
if(crntRow<32){
//А вот этот json объект должен создастся и размещен внутрь
//JSONObject month1; 31 раз.
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
//из list-а достаю слова в каждой ячейке и заполняю JSON
//обьект
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month1.put("day_" + cc, days);
cc++;
}
if(crntRow==31) {
year.put("month_1",month1);
}
crntRow++;
}
//тут и дальше тоже самое что сверху достаю строки от 32-х до
//60-и
if(crntRow>=32&&crntRow<=60){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month2.put("day_" + cc, days);
cc++;
}
if(crntRow==60) {
year.put("month_2",month2);
}
crntRow++;
}
if(crntRow>=61&&crntRow<=91){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month3.put("day_" + cc, days);
cc++;
}
if(crntRow==91) {
year.put("month_3",month3);
}
crntRow++;
}
if(crntRow>=92&&crntRow<=121){
int cc = 1;
JSONObject days = new JSONObject();
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month4.put("day_" + cc, days);
cc++;
}
if(crntRow==121) {
year.put("month_4",month4);
}
crntRow++;
}
if(crntRow>=122&&crntRow<=152){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month5.put("day_" + cc, days);
cc++;
}
if(crntRow==152) {
year.put("month_5",month5);
}
crntRow++;
}
if(crntRow>=153&&crntRow<=182){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month6.put("day_" + cc, days);
cc++;
}
if(crntRow==182) {
year.put("month_6",month6);
}
crntRow++;
}
if(crntRow>=183&&crntRow<=213){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month7.put("day_" + cc, days);
cc++;
}
if(crntRow==213) {
year.put("month_7",month7);
}
crntRow++;
}
if(crntRow>=214&&crntRow<=244){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month8.put("day_" + cc, days);
cc++;
}
if(crntRow==244) {
year.put("month_8",month8);
}
crntRow++;
}
if(crntRow>=245&&crntRow<=274){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month9.put("day_" + cc, days);
cc++;
}
if(crntRow==274) {
year.put("month_9",month9);
}
crntRow++;
}
if(crntRow>=275&&crntRow<=305){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month10.put("day_" + cc, days);
cc++;
}
if(crntRow==305) {
year.put("month_10",month10);
}
crntRow++;
}
if(crntRow>=306&&crntRow<=335){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month11.put("day_" + cc, days);
cc++;
}
if(crntRow==335) {
year.put("month_11",month11);
}
crntRow++;
}
if(crntRow>=336&&crntRow<=366){
JSONObject days = new JSONObject();
int cc = 1;
for (int i = 0; i < list.size(); i++) {
if(list.get(i).equals("Кун")){
break;
}
if(i==1){
days.put("lala",list.get(i));
}else if(i==2){
days.put("lala2",list.get(i));
}else if(i==3){
days.put("lala3",list.get(i));
}else if(i==4){
days.put("lala4",list.get(i));
}else if(i==5){
days.put("lala5",list.get(i));
}else if(i==5){
days.put("lala6",list.get(i));
}
month12.put("day_" + cc, days);
cc++;
}
if(crntRow==366) {
year.put("month_12",month12);
}
crntRow++;
}
}
try {
file = new FileWriter("test.json");
file.write(year.toJSONString());
file.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
file.close();
}
}
Помогите пожалуйста кто с чем может..
Это, а не проще регуляркой пройтись, м?
Pattern p = Pattern.compile("(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+?)\\s+(.+)");
Matcher matcher = p.matcher(this.value);
JSONObject year = new JSONObject();
JSONObject month = new JSONObject();
JSONObject day = new JSONObject();
int monthValue = 0;
while (matcher.find()) {
int dayInt = Integer.parseInt(matcher.group(1));
if(dayInt == 1) {
year.put("month_" + monthValue, month);
monthValue++;
month.clear();
}
day.clear();
for(int i=2; i < matcher.groupCount(); i++) {
day.put("lala" + i, matcher.group(i));
}
month.put("day_" + dayInt, day);
}
System.out.println(year);
И на выходе получается что-то вроде: http://jsoneditoronline.org/?id=b9bffd45bdec1265c971250c84c79d11
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Schedule {
@JsonProperty("date")
private LocalDate date;
@JsonProperty("lala")
private LocalTime time1;
@JsonProperty("lala2")
private LocalTime time2;
@JsonIgnore
private LocalTime time3;
@JsonProperty("lala3")
private LocalTime time4;
@JsonProperty("lala4")
private LocalTime time5;
@JsonProperty("lala5")
private LocalTime time6;
@JsonProperty("lala6")
private LocalTime time7;
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
public LocalTime getTime1() {
return time1;
}
public void setTime1(LocalTime time1) {
this.time1 = time1;
}
public LocalTime getTime2() {
return time2;
}
public void setTime2(LocalTime time2) {
this.time2 = time2;
}
public LocalTime getTime3() {
return time3;
}
public void setTime3(LocalTime time3) {
this.time3 = time3;
}
public LocalTime getTime4() {
return time4;
}
public void setTime4(LocalTime time4) {
this.time4 = time4;
}
public LocalTime getTime5() {
return time5;
}
public void setTime5(LocalTime time5) {
this.time5 = time5;
}
public LocalTime getTime6() {
return time6;
}
public void setTime6(LocalTime time6) {
this.time6 = time6;
}
public LocalTime getTime7() {
return time7;
}
public void setTime7(LocalTime time7) {
this.time7 = time7;
}
@Override
public String toString() {
return "Schedule{" + "date=" + date + ", time1=" + time1 + ", time2=" + time2 + ", time3=" + time3 + ", time4=" + time4 + ", time5=" + time5 + ", time6=" + time6 + ", time7=" + time7 + '}';
}
public LocalTime timeParser (String time) {
if (time==null) return null;
String[] split = time.split(":");
if (split.length==2) {
try{
return LocalTime.of(Integer.valueOf(split[0]), Integer.valueOf(split[1]));
}catch (NumberFormatException | java.time.DateTimeException e){
return null;
}
}
else return null;
}
public static List <Schedule> readScheduleFromFile(String fileName) throws FileNotFoundException {
List <Schedule> scheduleList = new ArrayList<>();
Scanner sc = new Scanner(new File(fileName), "UTF-8");
LocalDate date = LocalDate.now().withDayOfYear(1);
int monthCount=0;
while(sc.hasNext()){
String nextLine = sc.nextLine();
String[] split = nextLine.split(" ");
Schedule schedule = new Schedule();
int count = 0;
for (String s : split) {
if (!s.trim().isEmpty()) {
switch(count){
case 0:
try{
int day = Integer.valueOf(s);
if (day==1) monthCount++;
schedule.setDate(date.withMonth(monthCount).withDayOfMonth(day));
break;
}catch (NumberFormatException | java.time.DateTimeException e){
continue;
}
case 1: schedule.setTime1(schedule.timeParser(s)); break;
case 2: schedule.setTime2(schedule.timeParser(s)); break;
case 3: schedule.setTime3(schedule.timeParser(s)); break;
case 4: schedule.setTime4(schedule.timeParser(s)); break;
case 5: schedule.setTime5(schedule.timeParser(s)); break;
case 6: schedule.setTime6(schedule.timeParser(s)); break;
case 7: schedule.setTime7(schedule.timeParser(s)); break;
}
count++;
}
}
scheduleList.add(schedule);
}
return scheduleList;
}
public static void main(String[] args) throws JsonProcessingException, IOException {
String fileName = "txtx.txt";
List<Schedule> scheduleList = readScheduleFromFile(fileName);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
for (Schedule schedule : scheduleList) {
String writeValueAsString = objectMapper.writeValueAsString(schedule);
System.out.println(writeValueAsString);
System.out.println("**************************************************");
Schedule sc = objectMapper.readValue(writeValueAsString, Schedule.class);
System.out.println(sc);
System.out.println("**************************************************");
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь освоить Android Studio, поставил себе задачу реализовать приложение, которое бы брало с сервера JSON файл и выводило бы из него данные
Находил кучу инструкций по вставке рекламы в приложения, но не понимаю, как их применять к моему libgdx проектуВышло разве что вставить баннер,...