英文:
Update data in array with an input
问题
LocalDateTime myDateObj = LocalDateTime.now();
DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss");
String dateExit = myDateObj.format(myFormatObj);
System.out.println("Date and time exited: " + dateExit);
dateExit = dateExit.substring(option - 1);
这是我的代码,有错误的代码行是这一行:
dateExit = dateExit.substring(option - 1);
首先,系统会要求用户输入姓名和其他详细信息。输入的日期和时间将由系统自动生成并存储到数组中。日期和时间退出的初始值是 "-",因为我们不知道用户何时退出。现在,当用户想要更新退出日期和时间时,系统也会自动生成时间,但现在我的问题是如何更新系统生成的退出日期和时间(已经有值的情况下)到我的数组中。
非常感谢,一个Java新手
英文:
LocalDateTime myDateObj = LocalDateTime.now();
DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss");
String dateExit = myDateObj.format(myFormatObj);
System.out.println("Date and time exited: " + dateExit);
dateExit = dateExit[option - 1];
So this is my code, the code with error is this line:
dateExit = dateExit[option - 1]
At first, the system will ask for the user input for name and other details. The date and time entered will be automatically generate by the system and store into the array. And the value for date and time exit is "-" at the beginning because we don't know what time the user is going to exit. Now, when the user want to update the date and time exit, the time will also automatically generate by the system but now my problem is How to update the date and time exit (which generated by the system) to the date and time exit in my array which already have a value inside.
Thanks a lot, a Java Newbie
答案1
得分: 0
dateExit
在你的代码中是一个字符串对象。它不是一个数组。你不能对它执行dateExit[option - 1]
操作。
英文:
dateExit
in your code is a String object. Its not an array. You can not do dateExit[option - 1]
on it.
答案2
得分: 0
也许这个代码片段可以帮助您。其中有两个数组被初始化,每个数组包含两个元素。一个用于存储2个LocalizedDateTime对象,另一个用于存储2个String对象。LocalizedDateTime是一个不可变类,这意味着它们不能被更改。您必须再次使用LocalDateTime.now()来创建一个新的对象。如果您已经正确初始化了一个数组(前两行),您可以通过方括号来访问它。正如之前的评论者已经提到的,dateExit不是一个数组,因此编译器会报错。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class example {
public static void main(String[] args) throws InterruptedException{
LocalDateTime[] dateTimeArray = new LocalDateTime[2];
String[] stringArray = new String[2];
DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss");
// 获取开始时的日期和时间
dateTimeArray[0] = LocalDateTime.now();
stringArray[0] = dateTimeArray[0].format(myFormatObj);
System.out.println("开始时的日期和时间:" + stringArray[0]);
Thread.sleep(1000); // 模拟延迟
// 获取结束时的日期和时间(退出)
dateTimeArray[1] = LocalDateTime.now();
stringArray[1] = dateTimeArray[1].format(myFormatObj);
System.out.println("结束时的日期和时间:" + stringArray[1]);
}
}
英文:
Maybe this snippet can help you. In it two arrays are initialized with two elements each. One for 2 LocalizedDateTime objects, and one for 2 String objects. LocalizedDateTime is an immutable class, meaning they cannot be changed. You have to create a new object by using LocalDateTime.now() again. If you have initalized an array properly (First two lines) you can access it via the square brackets. As the previous commetators already said, dateExit is not an array thus compiler complains.
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class example {
public static void main(String[] args) throws InterruptedException{
LocalDateTime[] dateTimeArray = new LocalDateTime[2];
String[] stringArray = new String[2];
DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("dd-MMM-yyyy HH:mm:ss");
// Get date and time at beginning
dateTimeArray[0] = LocalDateTime.now();
stringArray[0] = dateTimeArray[0].format(myFormatObj);
System.out.println("Date and time begin: " + stringArray[0]);
Thread.sleep(1000); // Simulate delay
// Get date and time at end (exit)
dateTimeArray[1] = LocalDateTime.now();
stringArray[1] = dateTimeArray[1].format(myFormatObj);
System.out.println("Date and time end: " + stringArray[1]);
}
}
答案3
得分: 0
代码存在问题
您没有将 dateExit
声明为 String[]
,但却将其视为 String[]
。
解决方法
- 将
dateExit
声明为String[]
。 - 此外,为了简化,建议您使用不同的模式格式化
LocalDateTime
,以避免需要拆分格式化的日期时间字符串。
演示:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// 初始化 dateExit[]
String[] dateExit = { "-", "-" };
// 现在
LocalDateTime now = LocalDateTime.now();
// 将日期字符串赋给 dateExit[0]
dateExit[0] = now.format(DateTimeFormatter.ofPattern("dd-MMM-yyyy"));
// 将时间字符串赋给 dateExit[1]
dateExit[1] = now.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
// 显示 dateExit[]
System.out.println(Arrays.toString(dateExit));
// 显示各个元素
System.out.println("Exit date: " + dateExit[0]);
System.out.println("Exit time: " + dateExit[1]);
}
}
输出:
[22-Jul-2020, 11:39:27]
Exit date: 22-Jul-2020
Exit time: 11:39:27
英文:
Problem with your code
You have not declared dateExit
as String[]
but treated it as a String[]
.
Solution
- Declare
dateExit
asString[]
. - Also, for simplicity, I suggest you format
LocalDateTime
using separate patterns to avoid the need to split the formatted date-time string.
Demo:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Initial state of dateExit[]
String[] dateExit = { "-", "-" };
// Now
LocalDateTime now = LocalDateTime.now();
// Assign date string to dateExit[0]
dateExit[0] = now.format(DateTimeFormatter.ofPattern("dd-MMM-yyyy"));
// Assign time string to dateExit[1]
dateExit[1] = now.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
// Display dateExit[]
System.out.println(Arrays.toString(dateExit));
// Display individual elements
System.out.println("Exit date: " + dateExit[0]);
System.out.println("Exit time: " + dateExit[1]);
}
}
Output:
[22-Jul-2020, 11:39:27]
Exit date: 22-Jul-2020
Exit time: 11:39:27
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论