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

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

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

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

Q&A

解決済

5回答

1896閲覧

java 1から100まで足す

Rivia

総合スコア23

Java

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

1グッド

1クリップ

投稿2019/03/20 03:19

1から100まで足す計算をしようと思っています。
最初はfor文で作っていましたが、ふと数列を習っていたときのことを思い出したのです。
そこで、それを応用して計算をしようとしたのですが、出力が0になってしまいます。
どこがおかしいのか指摘してほしいです。

java

1import java.util.Scanner; 2public class Program { 3 4 public void input() { 5 Scanner scan = new Scanner(System.in); 6 } 7 public void compute() { 8 9 10 } 11 public void output() { 12 int i = 100; 13 int sum; 14 sum = ((1/2)*i)*(1+i); 15 System.out.println(sum); 16 } 17 18 19 public static void main(String[] args) { 20 Program p = new Program(); 21 p.input(); 22 p.compute(); 23 p.output(); 24 } 25} 26 27コード
DrqYuto👍を押しています

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

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

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

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

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

guest

回答5

0

ベストアンサー

output() で計算をしているのが最大の問題です。
compute() で計算をしてください!

投稿2019/03/20 03:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/03/20 05:02

こんなにもらって困る BA は久しぶりだわ^^; この回答は「設計上の」最大の問題の指摘で、「実行コード」としての問題は別なので、ちゃんと他の人の回答を参考にしてください。
guest

0

Java

sum = ((1/2)i)(1+i);

Javaでは整数わる整数は整数になるので、1/2は0です。
最後に2でわるように式を変更して下さい。

投稿2019/03/20 03:22

LouiS0616

総合スコア35660

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

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

Rivia

2019/03/20 03:39

回答有り難うございます! そうなんですか!それはintで宣言してるからですが? ちなみにsumをdoubleで宣言しても0.00になったのですが、それを回避する方法は上のやり方以外にありますか?
LouiS0616

2019/03/20 03:46

除数か被除数、どちらかが浮動小数であれば良いのです。 1.0 / 2 とか 1 / 2.0 とか、あるいは 1.0 / 2.0 とか、 1.0 * 1 / 2 とか。 > sumをdoubleで宣言しても0.00になった sumの型を変えても、計算過程には影響しません。
guest

0

"1/2" の "1" か "2" のどちらかに ".0" を付けますと double 型として計算されます.

sum = (int)((1.0/2)*i)*(1+i);

投稿2019/03/20 03:47

jimbe

総合スコア12632

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

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

0

for文無しで書いてみました。

public class Main { public static void main(String[] args) { int[] a = java.util.stream.IntStream.rangeClosed(1, 100).toArray(); int sum = java.util.Arrays.stream(a).sum(); System.out.println(sum); } } //5050

IntStream.rangeClosed()を使えば1行で書けます。

int[] a = java.util.stream.IntStream.rangeClosed(1, 1000).toArray();

https://teratail.com/questions/53073

int sum = java.util.Arrays.stream(a).sum();

https://teratail.com/questions/130372

投稿2019/03/23 16:48

DrqYuto

総合スコア432

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

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

0

少し入り組んだ処理や計算をする場合、
一気に一行で書くのではなく、ひとつひとつ計算して確かめてからまとめられた方が確実です。
特にプログラムで行う場合、「数学」としての計算と違う動きをすることがよくあります。

投稿2019/03/20 03:46

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問