質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

3回答

1350閲覧

コマンドプロンプトの空白について

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2021/06/24 04:46

編集2021/06/24 05:06

前提・実現したいこと

それぞれ、社員コード、氏名、支給額の間にスペースを入れたいです。
理想 → 社員コード:0001 氏名:花山花子 支給額:31000000

発生している問題・エラーメッセージ

現在の出力結果 C:\Users\snk19\Documents>java Task02 社員コード:0001氏名:花山花子支給額:31000000 社員コード:0002氏名:中山中子支給額:900000 社員コード:0003氏名:北山北子支給額:600000 社員コード:0004氏名:東山東子支給額:300000 社員コード:0005氏名:南山南子支給額:300000 社員コード:0006氏名:山田太郎支給額:100000 社員コード:0007氏名:西山西雄支給額:100000 社員コード:0008氏名:中野信二支給額:100000 社員コード:0009氏名:神山雄太支給額:250000 C:\Users\snk19\Documents>

該当のソースコード

import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Task02 { public static void main(String[] args) { File file = new File("C:/pleiades/workspace/Task02/src/emo01.txt"); //File file = new File("C:/Users/snk19/Documents/emp01.txt"); try (Scanner scanner = new Scanner(file)) { scanner.useDelimiter(","); //hasNext関数で値があるかを判定 while (scanner.hasNextLine()) { //System.out.println("ああああ"); //String型をint型へ変換 String empCode = scanner.next(); String empName = scanner.next(); String basicPay = scanner.next(); int basic = Integer.parseInt(basicPay); String day = scanner.next(); int days = Integer.parseInt(day); String empSec = scanner.next(); int empStatus = Integer.parseInt(empSec); switch (empStatus) { case 0: int payment00 = basic + 1000000; System.out.print("社員コード:" + empCode); System.out.print(" "); System.out.print(" 氏名:" + empName); System.out.println("支給額:" + payment00); break; case 1: int payment01 = basic + 500000; System.out.print("社員コード:" + empCode); System.out.print("氏名:" + empName); System.out.println("支給額:" + payment01); break; case 2: int payment02 = basic + 300000; System.out.print("社員コード:" + empCode); System.out.print("氏名:" + empName); System.out.println("支給額:" + payment02); break; case 3: int payment03 = basic + 100000; System.out.print("社員コード:" + empCode); System.out.print("氏名:" + empName); System.out.println("支給額:" + payment03); break; case 4: int payment04 = basic; System.out.print("社員コード:" + empCode); System.out.print("氏名:" + empName); System.out.println("支給額:" + payment04); break; case 5: int payment05 = basic * days; System.out.print("社員コード:" + empCode); System.out.print("氏名:" + empName); System.out.println("支給額:" + payment05); break; } //next関数は前から順番に値を取得 scanner.nextLine(); } } //scanner.nextLine(); catch (FileNotFoundException e) { e.printStackTrace(); } } }

試したこと

①System.out.print(" ")
②System.out.print("社員コード:" + empCode円記号(ここで出力できないです));
③要素をすべてダブル””で囲ってみた
→System.out.println(""支給額:" + payment03");
④System.out.print(" 氏名:" + empName);

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/24 04:52

「スペースもそういう文字列」ということは認識されてますでしょうか
退会済みユーザー

退会済みユーザー

2021/06/24 04:56

しております。なので、試してみたこと①に、記載しました。
quickquip

2021/06/24 04:56

System.out.print(" "); の部分は自分で書いたコードではないんでしょうか?
退会済みユーザー

退会済みユーザー

2021/06/24 04:58

書きました。文字列として空白を認識できると思って、なのですが、、、。
K_3578

2021/06/24 05:15

>課題 課題なのに出た不具合全部他人に聞いてて良いのか・・・?
退会済みユーザー

退会済みユーザー

2021/06/24 05:17

そのような意見も受け止めます。が、質問の趣旨とはそれるので、お控えいただけるとうれしいです。
m.ts10806

2021/06/24 05:26 編集

ただ、課題を投げるような投稿が「teratailの趣旨」に反しているかどうかのほうが先にきますよ。 https://teratail.com/help/avoid-asking 私も「課題である」というのが分かっていれば回答してません。申し訳ないですが低評価しました。 ぜひ、出題者に聞いてください。 この課題によってどういう成果を得たいのかは出題者しか知りません。
K_3578

2021/06/24 05:41

お控えして欲しいとのことなのでこのコメントだけ。 課題って出題者が課題を課した人の実力を測るためにやってるもんだと思うので、 出来なくても別に問題ないと思うんです。(出来るに越したことはないですが) 他人の力を借りて完成させたら、出題者は課した人にその課題を一人で解けるぐらいの 実力はあるんだなと思います。 その結果自分の能力以上の事を求められる様になります。 そうなってから実は全く分かりませんって言ったら出題者は怒るんじゃないかなぁ。 以上。自分には関係ない説教だと思うなら聞き流して頂いて構いません。
BeatStar

2021/06/24 11:23 編集

まず、「インデントぐらいは使いましょう」。 Tabキーや半角スペースでやるアレです。 そのままだと非常に読みづらいです。 英語とかで言えば、「This is a pen.」ではなく、「Thisisapen.」や「ThIs iS a PEn.」とかみたいな感じで、読みづらいです。(読めなくはないが、読むのが面倒になるレベル) それと、課題なら「自分でやりましょう」。 つか、明らかに基礎が出来ていないですね。 そもそも文字、文字列、数値、変数、定数……これらが分かっていれば、質問にある「試したこと」のようにはなり得ません。 まずは基礎からやってください。 基礎をないがしろにしている人にいくら丁寧に説明してもわかるはずがありません。 基礎が出来て初めて応用ができるのです。
dodox86

2021/06/24 10:07

そして退会。
退会済みユーザー

退会済みユーザー

2021/06/25 04:49

低評価ってやっぱメンタルくるのかな?
guest

回答3

0

Java

1import java.io.File; 2import java.io.FileNotFoundException; 3import java.util.Scanner; 4 5public class Task02 { 6 7 private static final String MESSAGE_FORMAT = "社員コード:%s 氏名:%s 支給額:%d"; 8 9 public static void main(String[] args) { 10 File file = new File("C:/pleiades/workspace/Task02/src/emo01.txt"); 11 //File file = new File("C:/Users/snk19/Documents/emp01.txt"); 12 13 try (Scanner scanner = new Scanner(file)) { 14 scanner.useDelimiter(","); 15 16 //hasNext関数で値があるかを判定 17 while (scanner.hasNextLine()) { 18 //System.out.println("ああああ"); 19 20 //String型をint型へ変換 21 String empCode = scanner.next(); 22 String empName = scanner.next(); 23 String basicPay = scanner.next(); 24 int basic = Integer.parseInt(basicPay); 25 26 String day = scanner.next(); 27 int days = Integer.parseInt(day); 28 29 String empSec = scanner.next(); 30 int empStatus = Integer.parseInt(empSec); 31 32 switch (empStatus) { 33 case 0: 34 display(empCode, empName, basic + 1000000); 35 break; 36 37 case 1: 38 display(empCode, empName, basic + 500000); 39 break; 40 41 case 2: 42 display(empCode, empName, basic + 300000); 43 break; 44 45 case 3: 46 display(empCode, empName, basic + 100000); 47 break; 48 49 case 4: 50 display(empCode, empName, basic); 51 break; 52 53 case 5: 54 display(empCode, empName, basic * days); 55 break; 56 } 57 } 58 59 } 60 61 //scanner.nextLine(); 62 63 catch (FileNotFoundException e) { 64 e.printStackTrace(); 65 } 66 } 67 68 private static void display(String empCode, String empName, int payment) { 69 System.out.println(String.format(MESSAGE_FORMAT, empCode, empName, payment)); 70 } 71}

投稿2021/06/24 07:20

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

元のデータがどうなっているか知らないですが、empStatusが0以外のデータしかないのでは?
0のときは支給額以外にはスペース書かれてますが、それ以外はスペースが書かれていません。
試しに0のデータだけにして試してみてください。

ただ、今のコードだとbasicに足し込む値だけが違うようですし、出力までcaseに個別に入れてしまうのはメンテナンス性も可読性も悪いと思います。
caseには足し込む値のみ変数として定義するようにし、出力は一箇所にされては。

投稿2021/06/24 05:06

編集2021/06/24 05:09
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/24 05:08

アドバイスありがとうございます。ただ、こちらは課題のテンプレなので、そちらは変更できません。
m.ts10806

2021/06/24 05:13 編集

回答の主旨はそこではないですが、課題としたらあまりよくない課題と指摘はしておきます。 変えれないなら結局個別にスペース入れていくしかありません。  課題だとしても「もっと効率的に書けないか」は考えるようにしてください。プログラミングは使う人の作業を楽にするもの、問題解決になるものですから、作る人が苦労しすぎても意味がないです。作って終わりじゃないですからね。変更に強い、ミスの起こりにくい(手順の少ない)実装の検討を。
退会済みユーザー

退会済みユーザー

2021/06/24 05:16

了解です。Returnなどを使用すべきだった、のでしょうか?
m.ts10806

2021/06/24 05:19

いえ、全く関係ないです。 現状で確認してもらいたいのはここ↓ >empStatusが0以外のデータしかないのでは?
m.ts10806

2021/06/24 05:22

あと、Javaプログラム更新したらコンパイルも忘れずに。 ※でもメモ帳でやってそう…。今頃さすがにありえない
guest

0

System.out.println(" 支給額:" + payment00);

としてみたらどうでしょう

投稿2021/06/24 04:49

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/24 04:54

現在のコードとの相違点がわからないのですが、どういうことでしょうか?私が理解できていないです。すみません。
y_waiwai

2021/06/24 05:00

支給額、の前にスペース入れます
退会済みユーザー

退会済みユーザー

2021/06/24 05:03

それもためしたのですが、だめでしたl質問を編集しておきます。
y_waiwai

2021/06/24 05:09

一か所だけでなく、全部のcaseに入れてみよう もしかして、一か所だけ入れてダメだと判断してませんか
退会済みユーザー

退会済みユーザー

2021/06/24 05:14

以下で実行してだめでした。 import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Task02 { public static void main(String[] args) { File file = new File("C:/pleiades/workspace/Task02/src/emo01.txt"); //File file = new File("C:/Users/snk19/Documents/emp01.txt"); try (Scanner scanner = new Scanner(file)) { scanner.useDelimiter(","); //hasNext関数で値があるかを判定 while (scanner.hasNextLine()) { //System.out.println("ああああ"); //String型をint型へ変換 String empCode = scanner.next(); String empName = scanner.next(); String basicPay = scanner.next(); int basic = Integer.parseInt(basicPay); String day = scanner.next(); int days = Integer.parseInt(day); String empSec = scanner.next(); int empStatus = Integer.parseInt(empSec); switch (empStatus) { case 0: int payment00 = basic + 1000000; System.out.print("社員コード:" + empCode); System.out.print(" 氏名:" + empName); System.out.println(" 支給額:" + payment00); break; case 1: int payment01 = basic + 500000; System.out.print("社員コード:" + empCode); System.out.print(" 氏名:" + empName); System.out.println(" 支給額:" + payment01); break; case 2: int payment02 = basic + 300000; System.out.print("社員コード:" + empCode); System.out.print(" 氏名:" + empName); System.out.println(" 支給額:" + payment02); break; case 3: int payment03 = basic + 100000; System.out.print("社員コード:" + empCode); System.out.print(" 氏名:" + empName); System.out.println(" 支給額:" + payment03); break; case 4: int payment04 = basic; System.out.print("社員コード:" + empCode); System.out.print(" 氏名:" + empName); System.out.println(" 支給額:" + payment04); break; case 5: int payment05 = basic * days; System.out.print("社員コード:" + empCode); System.out.print(" 氏名:" + empName); System.out.println(" 支給額:" + payment05); break; } //next関数は前から順番に値を取得 scanner.nextLine(); } } //scanner.nextLine(); catch (FileNotFoundException e) { e.printStackTrace(); } } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問