System.out.println();
を使い次の表示形式で出力させたいです。
商品コード:商品名(¥単価)・・在庫数
例
1:りんご(¥100)・・10
といった形で考えてます。
商品コード = code
商品名 = name
単価 = price
在庫数 = stock
現状自分で考えたのは
System.out.println(code + ":" + name + "(""¥" + price ")" + "・・"+ stock);
なのですがEclipseで構文エラーが発生してしまってます。
間違っている点、改善する方法を教えてください。
//SQL文を定義する
//商品マスター
String sql = "INSERT INTO shouhin_mst values(?,?,?)";
//在庫テーブル
String sam = "INSERT INTO stock values(?,?)";
//自動採番の商品コード取得
String max = "SELECT MAX(code) FROM shouhin_mst";
try {
// JDBCドライバのロード
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection(url, user, pwd);
con.setAutoCommit(false); //オートコミットはオフ
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
System.out.println("商品の追加を行う商品名、値段、在庫数を入力してください。");
System.out.print("商品名>");
Scanner scan = new Scanner(System.in);
String name = scan.nextLine();
System.out.print("値段>");
Scanner pri = new Scanner(System.in);
int price = pri.nextInt();
System.out.print("在庫>");
Scanner sto = new Scanner(System.in);
int stock = sto.nextInt();
//商品コードの採番
//商品マスターのinsert実行
ps = con.prepareStatement(sql);
ps.setInt(1, code);
ps.setString(2,name);
ps.setInt(3, price);
ps.executeUpdate();
//在庫テーブルinsert
ps = con.prepareStatement(sam);
ps.setInt(1, code);
ps.setInt(2, stock);
//画面表示 商品コード:商品名、単価、在庫数
System.out.println(code + ":" + name + "(" + "\" + price + ")" + "・・"+ stock);
rs.close();
stmt.close();
} catch (Exception e) {
con.rollback();
e.printStackTrace();
} finally {
if(ps != null)ps.close();
if (con != null)con.close();
}
}
}
質問の該当箇所は後半の画面表示と書いてある部分になります。
" + "・・"+ stock);
の部分に赤線で構文エラーと出ています。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+3
\は本来エスケープシーケンスとしての役割を果たします。
- 特殊な文字の入力(エスケープシーケンス)
例えば本来文字列を囲むための記号である"を出力したい場合など。
System.out.println("\"");
//出力結果: "
\を出力したい場合、エスケープシーケンス自体をエスケープする必要があります。
※↓の2番目のコード参照
編集される前のコードに対する回答
ダブルクォーテーションが沢山ついていますが、¥が全角なのでそのままで良いです。
あと、priceの直後の文字列連結の+が抜けています。
System.out.println(code + ":" + name + "(¥" + price + ")" + "・・"+ stock);
半角ならこう
System.out.println(code + ":" + name + "(\\" + price + ")" + "・・"+ stock);
HTMLに表示させるならこういうのもあります
System.out.println(code + ":" + name + "(¥" + price + ")" + "・・"+ stock);
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+2
System.out.println(code + ":" + name + "(""¥" + price ")" + "・・"+ stock);
現在実装されている形では、「"」がエスケープされています。
期待動作を得るためには「¥」をエスケープしたいと思いますので、「¥¥」が適当かと思います。
あと、priceの後ろに「+」が抜けているのでは無いでしょうか。
System.out.println(code + ":" + name + "(¥¥" + price + ")" + "・・"+ stock);
また、フォーマットが決まっているのであれば、String.formatが便利かとおもいます。
String result = String.format("%d:%s(\\%d)・・%d", code, name, price, stock);
System.out.println(result);
簡単に説明いたしますと、String.formatの第一引数の文字列に含まれる「%d」や、「%s」に第二引数以降の値が代入されます。
(「%d」は10進数、「%s」は文字列)
詳しくは下記を参照してください。
String.format
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
"(""¥"
ダブルクォーテーションが無駄。
"(¥"
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
質問への追記・修正、ベストアンサー選択の依頼
YasuhiroMiyake
2018/06/26 13:43
うまく表示されない という部分をもう少し具体的に記載出来ますでしょうか。(全く表示されない? 表示されているが、フォーマットの一部が違う? 値が違う?)
ribo
2018/06/26 13:45
Eclipseで構文エラーが発生してしまってます。
mts10806
2018/06/26 13:46
発生しているエラーメッセージを追記してください。https://teratail.com/help/question-tips#questionTips3-4
mts10806
2018/06/26 13:47
また、これだけではコードの全体像が見えませんので、それぞれの変数の値をセットしているところも含めてコード全体が分かる状態で提示してください。