Вы правы насчет части оболочки. Предполагая, что вы работаете в Unix, ваша оболочка Unix разделит вашу входную строку на пробелы, а затем вернет вам каждый фрагмент в качестве элемента в массиве, который вводится в «main». Единственный способ получить все как одну строку - это заключить в кавычки так (что вы сказали, что не хотите):
java MyProgram 'Hello World'
Если вы не хотите этого делать, самое простое - просто объединить их в строку:
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for(String s : args) {
sb.append(s);
sb.append(" "); //some length of whitespace
}
String yourString = sb.toString().trim();
}
Настоящая проблема здесь в том, что если вы попытаетесь избежать цитирования и самостоятельно рекомбинируете входные строки, вы потеряете количество пробела между каждым словом. Если вы рекомбинируете, все следующие командные строки:
java MyProgram Hello World
java MyProgram Hello World
java MyProgram Hello World
все равно будет отображаться как "Hello World" внутри вашей программы.