Этот ответ предназначен для того, чтобы помочь вам избежать проблем с вашим кодом и помочь вам решить проблему, в которой вы застряли.
Первый пункт: используйте Scanner#nextLine
вместо Scanner#next
в качестве Scanner#next
остановит сканирование после обнаружения первого пробела, т.е. будет сканировать только до STAJU01, Hong для ввода, STAJU01, Гонконг, Кочин, 20-05-2017, karthick
Демо:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the shipment details: ");
// Use Scanner#nextLine to scan the full line
String userDetail = sc.nextLine();
String userDetailParts[] = userDetail.split(",");
System.out.println(Arrays.toString(userDetailParts));
}
}
Пробный запуск:
Enter the shipment details: STAJU01,Hong Kong,Cochin,20-05-2017,karthick
[STAJU01, Hong Kong, Cochin, 20-05-2017, karthick]
Попробуйте запустить этот код с тот же ввод после изменения sc.nextLine()
на sc.next()
, и вы поймете разницу.
После разделения ввода на массив вы можете получить доступ к элементам, используя их индексы, например, используя userDetailParts[3]
, вы можете получить доступ строка даты. for
l oop в вашем коде не требуется.
Второй момент: не используйте устаревший API даты и времени, например java.util.Date
и java.text.DateFormat
. Вместо этого используйте современный API даты и времени . Подробнее об этом можно узнать из След: Дата Время .
Демо:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String args[]) {
// Given date string
String dateStr = "20-05-2017";
// Define the pattern for formatting
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate date = LocalDate.parse(dateStr, inputFormatter);
System.out.println(date);
// Now, if you want to print the date in some other format, you can define the
// format accordingly e.g.
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("EEEE MMMM dd, yyyy");
String formatted = outputFormatter.format(date);
System.out.println(formatted);
}
}
Вывод:
2017-05-20
Saturday May 20, 2017
Однако, если вы по-прежнему настаиваете на использовании устаревшего API для даты и времени и его форматирования, вы можете сделать это следующим образом:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String args[]) throws ParseException {
// Given date string
String dateStr = "20-05-2017";
// Define the pattern for formatting
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date date = sdf.parse(dateStr);
// Print date using the default format (i.e. Date#toString)
System.out.println(date);
// Print date using your custom format
System.out.println(sdf.format(date));
}
}
Выход:
Sat May 20 00:00:00 BST 2017
20-05-2017