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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

4395閲覧

javaコンソールで文字列を表示する記述

ribo

総合スコア11

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2018/06/26 04:41

編集2018/06/26 04:53

java

1System.out.println();

を使い次の表示形式で出力させたいです。
商品コード:商品名(¥単価)・・在庫数

1:りんご(¥100)・・10
といった形で考えてます。

商品コード = code
商品名 = name
単価 = price
在庫数 = stock

現状自分で考えたのは

java

1System.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(); } } }

質問の該当箇所は後半の画面表示と書いてある部分になります。

java

1" + "・・"+ stock);

の部分に赤線で構文エラーと出ています。

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

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

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

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

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

YasuhiroMiyake

2018/06/26 04:43

うまく表示されない という部分をもう少し具体的に記載出来ますでしょうか。(全く表示されない? 表示されているが、フォーマットの一部が違う? 値が違う?)
ribo

2018/06/26 04:45

Eclipseで構文エラーが発生してしまってます。
m.ts10806

2018/06/26 04:47

また、これだけではコードの全体像が見えませんので、それぞれの変数の値をセットしているところも含めてコード全体が分かる状態で提示してください。
guest

回答3

0

ベストアンサー

Java

1System.out.println(code + ":" + name + "(""¥" + price ")" + "・・"+ stock);

現在実装されている形では、「"」がエスケープされています。
期待動作を得るためには「¥」をエスケープしたいと思いますので、「¥¥」が適当かと思います。
あと、priceの後ろに「+」が抜けているのでは無いでしょうか。

Java

1System.out.println(code + ":" + name + "(¥¥" + price + ")" + "・・"+ stock);

また、フォーマットが決まっているのであれば、String.formatが便利かとおもいます。

Java

1String result = String.format("%d:%s(\%d)・・%d", code, name, price, stock); 2System.out.println(result);

簡単に説明いたしますと、String.formatの第一引数の文字列に含まれる「%d」や、「%s」に第二引数以降の値が代入されます。
(「%d」は10進数、「%s」は文字列)

詳しくは下記を参照してください。
String.format

投稿2018/06/26 05:01

yuusuko

総合スコア145

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

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

tkturbo

2018/06/26 05:11

> 「¥」をエスケープ ↑提示された質問者コードは全角¥マークだったので、エスケープは不要だと思われます
yuusuko

2018/06/26 05:15

おっしゃるとおりです。 失礼しました。 全半角確認せずコピペで記載しておりました。
guest

0

\は本来エスケープシーケンスとしての役割を果たします。

例えば本来文字列を囲むための記号である"を出力したい場合など。

java

1System.out.println("\""); 2//出力結果: "

\を出力したい場合、エスケープシーケンス自体をエスケープする必要があります。

※↓の2番目のコード参照

編集される前のコードに対する回答

ダブルクォーテーションが沢山ついていますが、¥が全角なのでそのままで良いです。
あと、priceの直後の文字列連結の+が抜けています。

java

1System.out.println(code + ":" + name + "(¥" + price + ")" + "・・"+ stock);

半角ならこう

java

1System.out.println(code + ":" + name + "(\" + price + ")" + "・・"+ stock);

HTMLに表示させるならこういうのもあります

java

1System.out.println(code + ":" + name + "(¥" + price + ")" + "・・"+ stock);

投稿2018/06/26 04:55

編集2018/06/26 05:03
m.ts10806

総合スコア80765

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

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

ribo

2018/06/26 05:05

半角の場合を試したら構文エラーが解決しました! ありがとうございました。
m.ts10806

2018/06/26 05:07

様式やコードの可読性も加味すると+で文字列をつなぐよりも、yuusukoさんの3つ目のような書き方のほうがいいかもしれません。
guest

0

"(""¥"

ダブルクォーテーションが無駄。

"(¥"

投稿2018/06/26 04:45

tkturbo

総合スコア5572

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問