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

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

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

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

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

Q&A

2回答

3477閲覧

Scannerで受け取ったlong型の数値の後ろに"L"を付けて処理を継続したい

nechikoyan

総合スコア12

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Java

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

0グッド

0クリップ

投稿2021/01/23 06:48

編集2021/01/23 11:30

標準入力で数値を受け取って処理を行うプログラムを書いているのですが、データ型をlongにしてもinteger number too largeというエラーが出てしまいます。
調べたところ、数値の最後に"L"を付けて、longであることを明示的に示す必要があるようです。

手動で数値を入力し、 10000000000L というふうに末尾にLを付けてプログラムを実行したところ、コンパイルエラーが出ることなく正常に終了することが出来ました。

Scannerで受け取った数値(long型)の末尾に"L"を付けるにはどうしたらいいでしょうか?
回答お待ちしております。

Java

1 2package practice202101; 3import java.util.Scanner; 4 5public class Practice0123 { 6 7 public static void main(String[] args) { 8 9 Scanner sc = new Scanner(System.in); 10 11 try { 12 long a = sc.nextLong(); 13 long b = sc.nextLong(); 14 System.out.println(calc1(a , b)); 15 16 }catch (Exception e ) { 17 18 System.out.println("Exception"); 19 } 20 } 21 22 23 public static long calc1(long x, long y){ 24 25 long result = -1; 26 27 if(x == 0 && y == 0){ 28 result = 0; 29 }else if((y - x + 1) % 2 == 0){ 30 result = (x + y) * ((y - x + 1) / 2); 31 }else{ 32 result = ((x + y) * ((y - x + 1) / 2)) + (x + ((y - x + 1) / 2)); 33 } 34 35 return result; 36 } 37} 38

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

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

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

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

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

m.ts10806

2021/01/23 06:55

現在のコードを提示してください。
nechikoyan

2021/01/23 11:31

コードを追記しました。 下記の問題を解いていおり、答えは出力例2になるようです。 long型で標準入力から数値自体は取得できているのですが、答えがlong型の最大値9223372036854775807よりも大きいため、計算途中でオーバーフローを起こし、値がマイナスになってしまいます。 問題文 2つの整数 A , B が与えられるので、 A, A + 1, .... B - 1, B の総和を求めてください。 入力例2 1 10000000000 出力例2 50000000005000000000
guest

回答2

0

実装に問題あるとしか思えませんが、通常は受け取ったStringをparseLongすれば良いかと。
受け取ってるならそこの問題じゃないです。その後の実装が悪い。

投稿2021/01/23 06:57

編集2021/01/23 06:58
m.ts10806

総合スコア80875

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

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

0

long型の変数に入れとけば、(当然ながら)longとなるのでそれでいいですよ
ああ、long型の範囲の数値を取り込みたいなら、nextLongで取り込めばよろしい

投稿2021/01/23 06:52

編集2021/01/23 06:56
y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問