はじめに
こいつを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
関数の引数として入力が与えられるもんだと思ったけど違うのね。
ニホンゴムズカシネー