🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

Q&A

解決済

2回答

498閲覧

Javaのコードの指摘をお願いします。

tamura0425

総合スコア37

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

0グッド

1クリップ

投稿2021/01/30 13:48

編集2021/01/31 02:02

以下の問題のに対するコードを作成しましたが、求めている結果になりません。
問題の箇所ですが、入力例3に対して、-1を出力したいが、3が出力されてしまいます。

不勉強で申し訳ありませんが、コードの訂正をご教示いただけますでしょうか。
お忙しいところ恐縮ですがよろしくお願いします。

高橋君はお酒を N 杯飲みました。

i 番目に飲んだお酒は、量が Vi ml、アルコール度数が Pi% です。
高橋君はアルコールの摂取量が X ml を超えると酔っ払います。

高橋君が酔っ払ったのは何杯目のお酒を飲んでいるときですか。ただし、
N杯全てのお酒を飲んだあとでも酔っ払っていない場合は、かわりに -1 を出力してください。

入力
入力は以下の形式で標準入力から与えられる。

N X
V1 P1



VN PN

入力例 1
2 15
200 5
350 3

出力例 1
2

入力例 2
2 10
200 5
350 3

出力例 2
2

入力例 3
3 1000000
1000 100
1000 100
1000 100

出力例 3
-1

java

1import java.util.*; 2 3public class Main { 4 static Scanner sc = new Scanner(System.in); 5 static ArrayList<Integer> intArray = new ArrayList<Integer>(); 6 static ArrayList<String> strArray = new ArrayList<String>(); 7 public static void main(String[] args) { 8 String a = sc.nextLine(); 9 String[] strlist1 = a.split(" "); 10 11 int x = Integer.parseInt(strlist1[0]); 12 int y = Integer.parseInt(strlist1[1]); 13 int ans = 0; 14 int i=0; 15 16 for(i=0 ; i<x ; i++) { 17 String b = sc.nextLine(); 18 String[] strlist2 = b.split(" "); 19 20 int a1 = Integer.parseInt(strlist2[0]); 21 int a2 = Integer.parseInt(strlist2[1]); 22 23 ans = ans + (a1*(a2/100)); 24 25 if(y <= ans) { 26 break; 27 } 28 } 29 30 if(i >= x) { 31 System.out.println(i); 32 } 33 else{ 34 System.out.println("-1"); 35 } 36 } 37} 38

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

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

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

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

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

gentaro

2021/01/30 13:50

「求めている結果になりません」じゃなく、どの入力に対して期待する値と実際の結果がどうなってしまうのか、それに対して自分が何をどのように調べたのか、ぐらいは書こう。
m.ts10806

2021/01/30 21:09

タイトルは要件を。タグを繰り返してるだけで中身がないです
guest

回答2

0

ベストアンサー

ご提示のコードで-1が表示されることは、ありません。
入力例1、2の出力結果が正しく見えるのは偶然です。

現状は、

java

1 if(i >= x) { 2 System.out.println(i); 3 }

必ずここを通るようになっています。

理由は、

java

1ans = ans + (a1*(a2/100));

a2/100は、0なのでa1*0を加算してもansは、0のまま増加しません。

ですので、

if(y <= ans) { // y < ans では? break; }

このbreakを通ることがないため、

java

1for(i=0 ; i<x ; i++)

このループを抜けたときに、iの値はxと同じになります。

ansが正しく計算できたとしても、
if(i >= x) という条件は、そもそも酔っ払ったかの判定には不適切です。

投稿2021/02/01 08:19

momon-ga

総合スコア4826

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

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

0

とりあえずですが、
ご自身が書いたコードを理解されていないように思います。

回答ではないですが、
1行毎に処理、宣言に対するコメント(日本語説明)を
書いてみてはいかがでしょうか?

多分、ご自身で気付けると思いますよ。

投稿2021/01/30 14:53

WhiteTempest

総合スコア404

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問