-
-
Save andersonmo/614023e814dd0e80436bbf0c91c53516 to your computer and use it in GitHub Desktop.
import java.io.*; | |
import java.util.*; | |
import java.text.*; | |
import java.math.*; | |
import java.util.regex.*; | |
import java.net.*; | |
import com.google.gson.*; | |
//------ My code ----------- | |
import java.io.InputStreamReader; | |
import java.net.URL; | |
import java.time.DayOfWeek; | |
import java.time.LocalDate; | |
import java.time.Month; | |
import java.time.format.DateTimeFormatter; | |
import java.time.temporal.TemporalAdjusters; | |
public class Solution { | |
/* | |
* Complete the function below. | |
*/ | |
class Result { | |
int page; | |
int per_page; | |
int total; | |
int total_pages; | |
List<Data> data; | |
} | |
class Data { | |
String date; | |
float open; | |
float close; | |
float high; | |
float low; | |
} | |
static void openAndClosePrices(String firstDate, String lastDate, String weekDay) { | |
LocalDate startDay = LocalDate.of(2000, Month.JANUARY, 5); | |
LocalDate endDay = LocalDate.of(2014, Month.JANUARY, 1); | |
DateTimeFormatter timeFormat = DateTimeFormatter.ofPattern("d-MMMM-yyyy", Locale.ENGLISH); | |
// | |
try{ | |
LocalDate date01 = LocalDate.parse(firstDate, timeFormat); | |
LocalDate date02 = LocalDate.parse(lastDate, timeFormat); | |
LocalDate tempDate; | |
String[] contWeekDays = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; | |
if (date01.isBefore(startDay)) { | |
date01 = startDay;} | |
if (date02.isAfter(endDay)) { | |
date02 = endDay;} | |
if(!Arrays.asList(contWeekDays).contains(weekDay)){ | |
System.out.println("Out of parameters."); | |
} else{ | |
do { | |
tempDate = date01.with(TemporalAdjusters.nextOrSame(DayOfWeek.valueOf(weekDay.toUpperCase()))); | |
URL dataEntry = new URL("https://jsonmock.hackerrank.com/api/stocks/?date="+timeFormat.format(tempDate)); | |
InputStreamReader reader = new InputStreamReader(dataEntry.openStream()); | |
Result result = new Gson().fromJson(reader, Result.class); | |
if ( result.total == 0){ | |
date01 = tempDate.plusWeeks(1); | |
}else { | |
for (Data datas : result.data) { | |
System.out.println(datas.date + " " + datas.open + " " + datas.close); | |
date01 = tempDate.plusWeeks(1); | |
} | |
} | |
}while (date01.isBefore(date02)); | |
} | |
} catch (Exception ex){} | |
} | |
//---- End of my code ---- | |
public static void main(String[] args){ | |
Scanner in = new Scanner(System.in); | |
String _firstDate; | |
try { | |
_firstDate = in.nextLine(); | |
} catch (Exception e) { | |
_firstDate = null; | |
} | |
String _lastDate; | |
try { | |
_lastDate = in.nextLine(); | |
} catch (Exception e) { | |
_lastDate = null; | |
} | |
String _weekDay; | |
try { | |
_weekDay = in.nextLine(); | |
} catch (Exception e) { | |
_weekDay = null; | |
} | |
openAndClosePrices(_firstDate, _lastDate, _weekDay); | |
} | |
} |
String[] contWeekDays = {"Monday","Tuesday","Wednesday","Thursday","Fryday","Saturday","Sunday"};
It should be "Friday", as per the question. Your solution had some partial failures, do not know why.
Can you please point out failures in my sol. It passed 4/10 with partial failure in 1.
@ashutosh049 thanks for see it type mistake.
About your code, have you imported the gson library to you project prior to run it?
In case of negative answer, get it here: https://search.maven.org/remotecontent?filepath=com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
yes, there is no problem with the library but with the logic
yes, there is no problem with the library but with the logic
@ashutosh049 I will try to figure you logic problem on this. As soon as possible I will answer you back with a solution.
https://jsonmock.hackerrank.com/api/stocks/?key=value: This query returns all results where the searched key has an exact matching value.
Shit! I misunderstood this line, didn't know that we can pass the date query param here. Bad luck :(
String[] contWeekDays = {"Monday","Tuesday","Wednesday","Thursday","Fryday","Saturday","Sunday"};
It should be "Friday", as per the question. Your solution had some partial failures, do not know why.
Can you please point out failures in my sol. It passed 4/10 with partial failure in 1.
My Solution:
`
import com.google.gson.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
enum Week {
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;
}
class StockPrice {
private int page;
private int per_page;
private int total;
private int total_pages;
private List data;
}
class Data {
private Date date;
private float open;
private float high;
private float low;
private float close;
}
class DateDeserializer implements JsonDeserializer {
}
public class Solution {
private static final String urlString = "https://jsonmock.hackerrank.com/api/stocks";
private static final SimpleDateFormat sdf = new SimpleDateFormat("d-MMMMM-yyyy");
private static final DecimalFormat decimalFormat = new DecimalFormat("0.##");
`