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

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

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

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

Q&A

1回答

1131閲覧

+演算子を使わずに変数同士で足し算が出来ますか?

arupaka

総合スコア30

Java

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

0グッド

1クリップ

投稿2020/03/29 10:57

編集2020/03/29 12:00

今年3月から独学でjavaを勉強し始めました。

実現したいこと

+演算子を使わなくても変数同士で足し算出来るのか、このコードはどうやって読むのかが知りたいです。

1.publicclassTest{
2.  publicstaticvoidmain(String[]args){
3.     int val1=10;
4.     double val2 =1.1;
5.     System.out.print(val1val2+"");
6.     val1=100;
7.     val2=1.2;
8.     System.out.print(val1
val2);
9.   }
10.}
エラーになる場所を探す問題ですが、エラーにならないようにコード変えてます。
アスタリスクの意味は、前の文字が0個以上になるということは調べてわかったのですが、
このコードで何故11.0 120.0になるのか全く分かりません…
御回答よろしくお願い申し上げます。

追記:
System.out.print(val1val2+"");
の+演算子とダブルクォート2つは、次のSystem.out.print(val1
val2); の結果を文字列として扱って、結果同士を隣り合わせにするという認識で合っていますでしょうか?
重ね重ね申し訳ございません。

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

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

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

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

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

shiketa

2020/03/29 11:09

> アスタリスクの意味は、前の文字が0個以上になるということは調べてわかったのですが 残念。それは、正規表現をあつかうときのはなし。 「問題」なのね。じゃヒント。10とか100とか1..2とかの数字や""の文字列部分ををいろいろ変えて試して規則を探してみては。腑に落ちるまでやってみて。
arupaka

2020/03/29 11:59

ありがとうございます。掛け算という事は分かり、少し解決しました!
m.ts10806

2020/03/29 12:26

>エラーにならないようにコード変えてます。 こちらでコピーすると行番号で引っかかります。 行番号は不要ですし、そもそもコードはマークダウンの機能を利用して提示するのが推奨されます。 https://teratail.com/questions/238564
arupaka

2020/03/29 13:36

すみませんでした、以後気を付けます。
m.ts10806

2020/03/29 20:31

質問編集して今対応してもらったほうが。「次は」って言うとほとんどの人は忘れてるので(いつになるか分からないし)
arupaka

2020/03/29 22:57

ありがとうございます、そうさせて頂きます!
退会済みユーザー

退会済みユーザー

2020/03/30 10:43

bigdecimalとかに一度変換すればいくらでも
guest

回答1

0

」がかけ算を表しています。
val1=10;
val2 =1.1;
System.out.print(val1
val2+"");
→ 10 × 1.1 = 11.0

val1=100;
val2=1.2;
System.out.print(val1*val2);
→ 100 × 1.2 = 120.0

投稿2020/03/29 11:07

編集2020/03/29 11:09
mashiro_dm

総合スコア10

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

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

arupaka

2020/03/29 11:35

ありがとうございます! アスタリスクは掛け算を表していたんですね、、 あと一つ確認したいところがありまして、 System.out.print(val1*val2+""); の+演算子とダブルクォート2つは、次のSystem.out.print(val1*val2); の結果を文字列として扱って、結果同士を隣り合わせにするという認識で合っていますでしょうか? 重ね重ね申し訳ございません。
mashiro_dm

2020/03/30 09:59 編集

求めてる回答と違かったらすみません。 System.out.print(val1*val2+""); //① System.out.print(val1*val2); //② ①のコードの+""は①を文字列として扱います。 ②のコードは数値として扱われています。 それぞれの末尾に+10とつけたら分かりやすいでしょうか。 System.out.println(val1*val2+""+10); //①11.010 //文字列が連結されるので11.0のあとに10がつづく System.out.println(val1*val2+10); //②130.0 //数値同士の足し算として扱われる System.out.println は出力結果の末尾に改行が入ります。 System.out.print は改行はありません。(横並びになってるのはこちらを使っているからではないでしょうか) 参考URL(ちょっと古い記事ですが…): https://www.techscore.com/blog/2012/11/28/数値-⇔-文字列変換-java編/
Zuishin

2020/03/30 10:17

一番口調がきついのはこの質問者だと思いますけどね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問