- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以为我可以制作这个简单的程序,而不需要寻求人类的帮助并浪费他们的时间,但我的“想法”在这里被绊倒了。到目前为止,谷歌一直在帮助我,但不幸的是,这是我所能得到的。因此,我们非常感谢任何帮助,在开始之前请注意,我刚刚开始接触 Java。
正如标题所说,这是一个类似于 Google Keep
的迷你议程程序,我们可以这么说,用户会看到一个基于控制台的菜单,如下所示:
当他/她转到选项 2 时,程序应正确列出事件。目前,它仅显示所有内容。实际上,这是 main 中的代码:
public class Agenda
{
public static void main(String[] args) throws IOException
{
Person person = new Person();
Event event = new Event();
Scanner sc1 = new Scanner(System.in);
Scanner sc2 = new Scanner(System.in);
//System.out.println(date.toString());
//System.out.println(hourMinutesSeconds.toString());
boolean agenda = true;
while (agenda)
{
System.out.println("Menu");
System.out.println("====");
System.out.println("1. Register personal events");
System.out.println("2. Current week/day events");
System.out.println("3. Delete events");
System.out.println("4. Edit events");
System.out.println("5. Close agenda");
int choice = sc1.nextInt();
switch (choice)
{
case 1:
{
int exit = 1;
String save = "";
while (exit == 1)
{
System.out.println("Register personal events");
System.out.println("=========================");
System.out.println("Your name:");
person.setName(sc2.nextLine());
System.out.println("Person phone number:");
person.setPhoneNumber(sc2.nextLine());
System.out.println("Add details about someone's anniversary(optional: schedule a date in the format as follows (hour/minutes/seconds day/month/year))");
event.setBirthDay(sc2.nextLine());
System.out.println("Add details about the conference(optional: schedule a date in the format as follows (hour/minutes/seconds day/month/year))");
event.setMeeting(sc2.nextLine());
System.out.println("Add details about the debate(optional: schedule a date in the format as follows (hour/minutes/seconds day/month/year))");
event.setDebate(sc2.nextLine());
System.out.println("Save the event?yes\\no");
save = sc2.nextLine();
if (save.equals("yes"))
{
String fileName = person.toString().substring(6, person.toString().indexOf("\n")) + ".txt";
EventSaver.saveToFile(person.toString() + event.toString(), fileName);
}
System.out.println("Do you wish to add more events? 1-Yes, 0-No");
exit = sc1.nextInt();
}
break;
}
case 2:
{
String[] events = EventSaver.readEvents();
for (int i = 0; i < events.length; i++)
{
System.out.println(events[i]);
}
break;
}
case 3:
{
break;
}
case 4:
{
break;
}
case 5:
{
agenda = false;
sc1.close();
sc2.close();
System.out.println("Agenda closed");
break;
}
default:
{
throw new IllegalArgumentException("Invalid option...\ngoing back to main menu");
}
}
}
}
}
EventSaver 类:
public class EventSaver
{
private static String FILENAME = "D:\\my_stuff\\some_dir\\some_dir\\Workspace\\EventAgenda\\src\\";
public static void saveToFile(String content, String fileName)
{
BufferedWriter bw = null;
FileWriter fw = null;
try
{
fw = new FileWriter(FILENAME + fileName);
bw = new BufferedWriter(fw);
bw.write(content);
System.out.println("Event saved");
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (bw != null)
{
bw.close();
}
if (fw != null)
{
fw.close();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
public static String[] readEvents() throws IOException
{
File folder = new File("D:\\my_stuff\\some_dir\\some_dir\\Workspace\\EventAgenda\\src\\");
File[] listOfFiles = folder.listFiles();
String fileContents = "";
String[] content;
for (int i = 0; i < listOfFiles.length; i++)
{
File file = listOfFiles[i];
if (file.isFile() && file.getName().endsWith(".txt"))
{
fileContents += FileUtils.readFileToString(file, "UTF-8") + "\n";
}
}
content = fileContents.split("\n");
return content;
保存事件后,属于特定用户的 .txt
文件如下所示:
Name: Bob
Phone Number: 0741123458
Birthday: Elena, at LongDrinks(19:00:00 19/06/2017)
Conference: Current stage of the project SMFA(20:00:00 24/06/2017)
Debate: The meaning of this world(21:30:00 19/06/2017)
我尝试获取这些日期并以某种方式比较它们,但使用此代码却徒劳无功:
public class SetEvents {
if (event.toString().indexOf("(") != -1)
{
String[] eventTimeAndDate = (event.toString().substring(event.toString().indexOf("(") + 1, event.toString().indexOf(")"))).split(" ");
String[] eventTime = eventTimeAndDate[0].split(":");
String[] eventDate = eventTimeAndDate[1].split("/");
Time hourMinutesSeconds = new Time();
hourMinutesSeconds.setHour(Integer.parseInt(eventTime[0]));
hourMinutesSeconds.setMinute(Integer.parseInt(eventTime[1]));
hourMinutesSeconds.setSecond(Integer.parseInt(eventTime[2]));
MyDate date = new MyDate(Integer.parseInt(eventDate[2]), Integer.parseInt(eventDate[1]), Integer.parseInt(eventDate[0]));
}
但是有了这个,我只能从文件中提取第一个日期出现的情况,并且我需要获取所有出现的情况,使用其他类以某种方式比较它们,以查找当前周和天的事件,并在选择选项 2 时正确显示它们。我可以做吗?谢谢
最佳答案
在 Java 中还有第二个 indexOf
方法
indexOf(String str, int fromIndex)
Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
(参见:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html)
所以你可以这样:
int startAt = 0;
String evt = event.toString();
while (evt.indexOf("(", startAt) != -1){
startAt = indexOf("(", startAt)+2;
String[] eventTimeAndDate = (event.toString().substring(event.toString().indexOf("(") + 1, event.toString().indexOf(")"))).split(" ");
String[] eventTime = eventTimeAndDate[0].split(":");
String[] eventDate = eventTimeAndDate[1].split("/");
Time hourMinutesSeconds = new Time();
hourMinutesSeconds.setHour(Integer.parseInt(eventTime[0]));
hourMinutesSeconds.setMinute(Integer.parseInt(eventTime[1]));
hourMinutesSeconds.setSecond(Integer.parseInt(eventTime[2]));
MyDate date = new MyDate(Integer.parseInt(eventDate[2]), Integer.parseInt(eventDate[1]), Integer.parseInt(eventDate[0]));
}
编辑:没有测试它,但在这个 while 循环中你应该能够提取你得到的所有日期
关于Java:基本议程程序,人们可以在其中操纵他们的事件,并根据需要获得当前一周或一天的事件通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648650/
moment.js 库很棒,我几乎一直都在使用它,但我最近遇到了一些有趣的事情。我正在尝试按一年中的一周绘制数据,其中一个数据点是 2013 年 12 月 31 日,moment.js 告诉我这是第
有没有办法可以找到给定一年的最后一周的数字。 例如,对于年份 2018 , 2018 的最后一周数是 52。 年份 2015 , 上周数字是 53。 最佳答案 如果您指的是 ISO 周,那么您可以使用
我正在尝试创建一个 if 语句,该语句根据当前日期检查日期,如果日期少于 2 周,则抛出 错误。 我当前的代码 const moment = require('moment') const today
转换 Spark 数据帧 +----+---------+------+ |name|date |amount| +----+---------+------+ |Jhon|4/6/2018
我有这段代码,我想在从日期选择器获取的日期中添加 40 周,并在将 40 周(280 天)添加到从日期选择器获取的日期后获取新日期。 代码: public class MainActivity ext
我的 table 上有一个 timestamp字段,这是一个标准的 RethinkDB 日期字段。 我可以使用此时间戳字段按天/周/月对行进行分组吗?在 group() 文档中找不到任何示例。 最佳答
当用户单击日/周/月按钮时,我需要运行一些 Javascript 代码来重新加载日历。是否有类似 dayButtonClicked() 之类的回调? 发生BUG: 当我第一次加载日历时。最初的 Vie
当我收到年份、周数和星期几时,如何在 C# 中计算日期。例如:年份 = 2011周 = 27天 = 6 结果应该是 2011-7-10 感谢大家。我根据维基百科算法解决了它。 最佳答案 此处没有 C#
如何使用 c#.net 每天、每周和每月发送电子邮件? 我正在考虑创建一个 Windows 服务应用程序,但我不知道该怎么做,也不知道该怎么做。 非常感谢您的想法。 最佳答案 Windows 服务可能
最近我在处理全日历。我想更改周 View 中日期的格式。我发现很多人使用 columnFormat: { month: 'ddd', week: 'ddd d/M', day: 'dddd d/M'
我正在使用一个完整的日历插件来显示各种事件。 我的问题是,当我更改正在查看的月份/周,然后刷新时,我会回到当前的月份/周,而我想留在之前查看的同一个月/周。即如果现在是八月,我回到七月,然后刷新,我希
我有一个按周计算所有工单的查询,但我需要将其转换为动态两行报告,将周开始日期移动到列中? 这就是我试图让它做的事情.. 这是我的查询: SELECT td_type, FROM_DAYS(TO_DAY
我想获取某件事的统计数据。 我正在尝试统计今天、本周、本月的情况。 我的查询: "SELECT COUNT(id) FROM images i WHERE i.user_id = 3 GROUP BY
我正在开发一个有 200.000 个页面的网站。还有一个浏览部分,显示最受欢迎、评价最高等文档。然而,在发布几周后,此部分将变得几乎静态。所以我还想实现一个过滤系统,它将显示今天、本周、本月最受欢迎的
如何从字段日期早于现在 + 2 周的 MySQL 数据库中获取行? 我试过了 WHERE date_ready < DATE_SUB(CURDATE(), INTERVAL 2 WEEK) 但这不是我
我有下表: create table my_table ( SubjectID int, Date Date, Test_Value int ); insert into my_table(Su
好吧,这几天我一直在努力解决这个问题。我是一个 super 初学者,我有一个标签。在该标签中,我显示了日期 1/20/21。我能够做到这一点。然后我有一个按钮。我希望每次单击该按钮都会将日期增加 14
我有一个数据集,其中包含工厂 worker 三年产出的数据。现在我想获得基于日期、周、月的平均输出。问题是日期格式类似于 %d.%m.%Y(日-月-年)。我的问题是如何在保持日期格式不变的同时获得预期
我有这样的东西 DateTime.Now.ToString("dd.MM.yy"); 在我的代码中,我需要添加 1 周,比如 5.4.2012 变成12.4.2012 我试过转成int再累加,但是到3
我已经阅读了几篇关于在 mysql 查询中估计移动平均值的文章,但是我的情况似乎稍微困难一些,因为该表不包含我想要计算平均值的列。我需要计算每组的行数,并显示该组的移动平均值。 表中基本上只有一列相关
我是一名优秀的程序员,十分优秀!