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

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

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

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

Q&A

6回答

4372閲覧

抽出の仕方がわかりません

muuuuu

総合スコア10

Java

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

1グッド

1クリップ

投稿2019/01/07 07:06

編集2019/01/07 08:02

Java

コード
class Main
{
public static void main(String[] args ){
Human [] data = new Human[5];
data[0] = new Human("やまだ",154,1);
data[1] = new Human("よしだ",164,2);
data[2] = new Human("はまだ",160,2);
data[3] = new Human("さなだ",184,2);
data[4] = new Human("ふくだ",174,1);

int [] intrest = new int[5]; for( int i = 0; i<data.length; i++){ intrest[i] = (int)( data[i].getShincho() >= 160); if(data[i].getSeibetu() == 2){ System.out.println(data[i].getName());   } }

}
}

javaの勉強をしていてここでつまづきました。
160㎝以上の身長の女性(=2)を配列の中から抽出しようとしています。

発生している問題・エラーメッセージ

エラーメッセージ
Main.java:45: error: incompatible types: boolean cannot be converted to int
intrest[i] = (int)( data[i].getShincho() >= 160);

該当のソースコード

ソースコード

int [] intrest = new int[5]; for( int i = 0; i<data.length; i++){ intrest[i] = (int)( data[i].getShincho() >= 160); if(data[i].getSeibetu() == 2){ System.out.println(data[i].getName());  

試したこと

(int)のところをnew intにしてみたり、(int data にしてみたりしました。

DrqYuto👍を押しています

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

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

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

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

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

m.ts10806

2019/01/07 07:09

コードはマークダウンのcode機能を利用して提示してください
m.ts10806

2019/01/07 07:10

dataという変数の定義、内容をご提示ください。この内容だけでは再現確認もできませんし、回答も難しいです。
LouiS0616

2019/01/07 07:52

配列intrestは何のために用意したのでしょうか?
m.ts10806

2019/01/07 08:03

コードはマークダウンのcode機能を利用して提示してください
muuuuu

2019/01/07 08:05

見てくださりありがとうございます。 そのほうがわかりやすいかと考えしました。 自分でも理解できていない部分が多くあるので間違っていたり、複雑になっていましたら教えていただきたいです。
退会済みユーザー

退会済みユーザー

2019/01/07 09:59

コードはマークダウンのcode機能を利用して提示してください この状態だとインデントが行われていないため,むしろ「見づらい」です. インデントを行うことで見やすくなります.
guest

回答6

0

boolean cannot be converted to int

「真偽値は整数に変換できない」というエラーです。

投稿2019/01/07 07:09

otn

総合スコア84553

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

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

0

intrestをboolean配列にして、そのまま代入すれば良いのでは?


あるいは『trueのときは1、falseのときは0を代入したい』のならば、三項演算子を使うと簡潔です。

Java

1intrest[i] = (data[i].getShincho() >= 160) ? 1 : 0;

質問編集を受けて

160㎝以上の身長の女性(=2)を配列の中から抽出

論理積って、ご存知ですか。

Java

1if(条件A && 条件B) { 2 ... 3}

&&を使えば、『AかつBである』という判定ができます。

投稿2019/01/07 07:09

編集2019/01/07 08:07
LouiS0616

総合スコア35660

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

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

0

動作確認済みですが問題なく160センチ以上の女性が抽出できましたよ。

Humanクラスは記載がなかったので適当にそれっぽく作りました。

intrest[] はその後の記載がなかったので、判定するために作ったものだと考えて省きました。

Java

1public class Main { 2 public static void main(String[] args) { 3 4 Human [] data = new Human[5]; 5 data[0] = new Human("やまだ",154,1); 6 data[1] = new Human("よしだ",164,2); 7 data[2] = new Human("はまだ",160,2); 8 data[3] = new Human("さなだ",184,2); 9 data[4] = new Human("ふくだ",174,1); 10 11 for( int i = 0; i<data.length; i++){ 12 if (data[i].getShincho() >= 160 && data[i].getSeibetu() == 2) { 13 System.out.println(data[i].getName()); 14 } 15 } 16 } 17}

Java

1public class Human { 2 private String name; 3 private Integer shincho; 4 private Integer seibetsu; 5 6 public Human () { 7 8 } 9 10 public Human (String a, Integer b, Integer c) { 11 this.name = a; 12 this.shincho = b; 13 this.seibetsu = c; 14 } 15 16 public String getName() { 17 return this.name; 18 } 19 20 public Integer getShincho() { 21 return this.shincho; 22 } 23 24 public Integer getSeibetu() { 25 return this.seibetsu; 26 } 27}

投稿2019/01/09 02:39

azuapricot

総合スコア2341

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

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

0

intrestってそのあとでどこでも使っていませんよね。
結局、「身長160cm以上」かつ「女性」を探せばいいのですから、

java

1if (/* data[i]の身長が160cm以上である */ && /* data[i]は女性である */) { 2 System.out.println(data[i].getName()); 3}

こう書けば済む話です。

投稿2019/01/09 02:14

swordone

総合スコア20651

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

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

0

160以上の数値を格納したいなら、こんな感じですか。
.getShincho()がintを返す前提ですが。。

java

1for( int i = 0; i<data.length; i++){ 2 3 int shincho = data[i].getShincho(); 4 5 // 身長が160以上の場合配列に格納 6 if(shincho >= 160){ 7 intrest[i] = shincho; 8 } 9 10}

投稿2019/01/07 07:30

ronin

総合スコア89

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

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

0

data[i].getShincho()

がbooleanを返している、とかでしょうか。

投稿2019/01/07 07:09

kazto

総合スコア7196

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問