はじめに
こいつをVSCodeで解いてみようと思ったのがことの発端。
問題文
高橋君はデータの加工が行いたいです。
整数 a,b,cと、文字列 s が与えられます。
整数 a+b+c と、文字列 s を並べて表示しなさい。
VSCodeでJavaを実行(デバッグ)
VSCodeでJavaを実行(デバッグ)するためにはDebugger for Javaという拡張機能が必要。
なんだけど、まあその辺の話は面倒なので割愛。ググれば出てくるので如何様にも。
通常はF5でデバッグを開始してくれるが、そのときに必要なのがlaunch.jsonという設定ファイル。
デフォルトではこんな感じの設定になってるはず。
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Debug (Launch)",
"request": "launch",
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopOnEntry": false,
"mainClass": "",
"args": ""
}
]
}
が、この状態で実行するとVSCode下部の「デバッグコンソール」というところに出力される。

これだと出力は確認できるが、前述のAtCoderの解答例のようなScannerでの入力を受け付けることができない。
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
// 整数の入力
int a = sc.nextInt();
// スペース区切りの整数の入力
int b = sc.nextInt();
int c = sc.nextInt();
// 文字列の入力
String s = sc.next();
// 出力
System.out.println((a+b+c) + " " + s);
}
}
launch.jsonの書き換え
結論から言うと、必要なのはlaunch.jsonの"console": "internalConsole"の書き換え。
こいつを"console": "integratedTerminal"に書き換えた上で実行すると、出力先が「デバッグコンソール」から「ターミナル」に変わり、以下のように入力待ちとなる。

この状態でターミナルに任意の入力をすると、Scannerに読み込まれる。

まとめ
しかしこの問題、main関数の引数として入力が与えられるもんだと思ったけど違うのね。
ニホンゴムズカシネー