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

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

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

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

Q&A

解決済

2回答

1242閲覧

解を順に出力する方法

reina1125

総合スコア21

Java

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

0グッド

0クリップ

投稿2018/11/03 10:02

編集2018/11/05 01:10

下記のコードで実行したところ、下のようなエラーが出てしまいます。
原因がわかる方、よろしくお願いします。

X1=(0,1)=Exception in thread "main" java.util.IllegalFormatConversionException: d != ilog.cplex.CpxNumVar
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
at java.util.Formatter.format(Formatter.java:2520)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at cplex.csg.typecsg.main(typecsg.java:75)

java

1コード 2 3if(cplex.solve()) { 4 5 for (int i = 0; i <= 3; i++) { 6 for (int j = 0; j <= 2 ; { 7 if(i+j!=0) { 8 for (int k = 0; k<=4; k++) { 9 IloIntVar[] num = {X1,X2,X3,X4}; 10 System.out.printf("X%d=(%d,%d)=%d \n", c++, i, j,num[k]); 11 } 12 } 13 } 14 }

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

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

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

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

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

guest

回答2

0

フォーマットで使うdは整数を受けるための識別子です。
一般のオブジェクトを受け取るにはsを使います。

java

1 System.out.printf("X%d=(%d,%d)=%s \n", c++, i, j,num[k]);

投稿2018/11/03 10:41

swordone

総合スコア20651

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

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

swordone

2018/11/03 10:41

ただし、IloIntVerが適切にtoString()をオーバーライドしていればの話ですが…
reina1125

2018/11/03 11:08

エラーが消えました!ありがとうございます! X1=(0,1)=[0..2] X2=(0,2)=[0..1] X3=(1,0)=[0..3] X4=(1,1)=[0..2] X5=(1,2)=[0..1] X6=(2,0)=[0..1] X7=(2,1)=[0..1] X8=(2,2)=[0..1] X9=(3,0)=[0..1] X10=(3,1)=[0..1] X11=(3,2)=[0..1] 出力がこのように変数がとりうる全ての値が表示されたのですが、目的関数が最大化された時の値のみを表示することはできないのでしょうか?
guest

0

ベストアンサー

num[k]の型が、整数型でなく、ilog.cplex.CpxNumVar型なのでエラーが出ているのかなと思います("%d"は整数を表示するときに使う)。num[k]をキャストしてあげては?

javascript

1System.out.printf("X%d=(%d,%d)=%d \n", c++, i, j, num[k]);

参考: 【Java】【トラブル】Javaの実行例外の対応あれこれ 記事をクリップする

投稿2018/11/03 10:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

reina1125

2018/11/03 10:37

num[k]をint にキャストしましたが、 型の不一致: IloIntVar から int には変換できません とエラーが出でしまいました...
退会済みユーザー

退会済みユーザー

2018/11/03 10:44

一番いいのは、同僚か上司に仕様を確認できるリファレンスがないか、または、そこにアクセスする方法を聞いてみてください。とりあえずなんとかできないかというのであれば、最後の%dを%sに変えて、num[k].ToString()としてみるとよいかと。それでうまくいかなければ、IDEでnum[k].まで打ち、入力予測から、(整数か浮動小数点かわかりませんが)それらしいメンバを探して、そこから得られた結果をキャストするという方法があるかと。
reina1125

2018/11/03 11:08

アドバイス通りに打ち直してみるとと、エラーが消えました!ありがとうございます! X1=(0,1)=[0..2] X2=(0,2)=[0..1] X3=(1,0)=[0..3] X4=(1,1)=[0..2] X5=(1,2)=[0..1] X6=(2,0)=[0..1] X7=(2,1)=[0..1] X8=(2,2)=[0..1] X9=(3,0)=[0..1] X10=(3,1)=[0..1] X11=(3,2)=[0..1] 出力がこのように変数がとりうる全ての値が表示されたのですが、目的関数が最大化された時の値のみを表示することはできないのでしょうか?
退会済みユーザー

退会済みユーザー

2018/11/03 11:19

なにかしらあるとは思いますが、仕様がわからない&計算から離れて長いので何とも。IBMさんところのライブラリを利用しておられるのかと思いますが、pythonのライブラリなんかでも似たようなことができると思います。めちゃくちゃ違う設計思想にはなってないとおもうので、pythonのライブラリで同じようなことやっている記事を探して、それを参考にしてみるとかどうでしょう。
reina1125

2018/11/03 12:39

分かりました!丁寧にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問