【復活求む!】惜しくも解散してしまったバンド|J-ROCK編 >>

下のような拡張ユーグリッドのプログラムを組んだのですがエラーが出て何が悪いのかがわかりません。エラーの内容は
apRSA.java:18: 型の開始が不正です。
do{
^
apRSA.java:57: <identifier> がありません。
}while(q.compareTo(BigInteger.ONE) !=0);
^
の二つです。どなたか助けてください。

import java.math.*;
import java.util.Random;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class apRSA extends Applet{
BigInteger p,q,e,d,m,c,m2,t,t1,p1,q1,e1;

final int bit =512;
final int k =10;
Random rnd =new Random();

do{
p=new BigInteger(bit,k,rnd);
p1=p;
q=new BigInteger(bit,k,rnd);
q1=q;

BigInteger []x;
BigInteger []y;
BigInteger []z;

x =new BigInteger[3];
y =new BigInteger[3];
z =new BigInteger[3];

x[0] =BigInteger.ONE;
y[0] =BigInteger.ZERO;
z[0] =p;

x[1] =BigInteger.ZERO;
y[1] =BigInteger.ONE;

while(q.compareTo(BigInteger.ZERO) !=0){
BigInteger r =p.mod(q);
p=q;
q=r;
}

}while(q.compareTo(BigInteger.ONE) !=0);
}

このQ&Aに関連する最新のQ&A

A 回答 (2件)

このapRSAっていうクラスにはメソッドはないのですか。


Javaの場合、処理はメソッド中に書きます。
    • good
    • 0
この回答へのお礼

ありがとうございました。これで何とかなりそうです。

お礼日時:2005/07/28 09:23

たぶん、do{????????}while(){??????}


が対になっていない。
whileの前で、}で閉じられていないためだとおもいます。

http://www.kab-studio.biz/Programing/JavaA2Z/Wor …

http://www.kab-studio.biz/Programing/JavaA2Z/Wor …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDo While中のVBAアプリケーション定義エラー

Win2000、Excel2000で作業をしています。
無限ループで、Sheet1を監視し、特定のセルに「1」が入ったら別のセルの内容を変更すると言うものです。
ここで、何度目かに「1004)アプリケーション定義またはオブジェクト定義のエラーです」とでます。
(テストのため、(1,5)のセルに何か書き込み、(1,3)に1を入れるというのを繰り返していると、(1,5)に書き込んだ時に出る。)
Do While True
If Sheet1.Cells(1, 3) = "1" Then
Sheet1.Cells(1, 5) = ""
Sheet1.Cells(1, 6) = "0"
End If
DoEvents
Loop

ハイライトもしなくて、どこで落ちているのかわからず困っています。
ちなみに、1をvalで見ても同じで、1秒ごとに見ても同じでした。

どなたか原因の心当たりのあるから、ご助力お願いいたします。

Win2000、Excel2000で作業をしています。
無限ループで、Sheet1を監視し、特定のセルに「1」が入ったら別のセルの内容を変更すると言うものです。
ここで、何度目かに「1004)アプリケーション定義またはオブジェクト定義のエラーです」とでます。
(テストのため、(1,5)のセルに何か書き込み、(1,3)に1を入れるというのを繰り返していると、(1,5)に書き込んだ時に出る。)
Do While True
If Sheet1.Cells(1, 3) = "1" Then
Sheet1.Cells(1, 5) = ""
Sheet1.Cells(1, 6) ...続きを読む

Aベストアンサー

こんにちは。Wendy02です。

>エラーの原因ってのは結局どこなのか・・・。

失礼かもしれませんが、基本的なコードの部分で疑問の付くところが多いのです。その段階で、エラーの原因をお知りになっても、あまり役に立たないように思います。

>「1004)アプリケーション定義またはオブジェクト定義のエラーです」

今回は、ワークシートのオブジェクトとCellsの不整合のエラーだと思います。直接の原因は、Sheet1 とされたことが原因で、現在使用中のオブジェクトが、Sheet1 とは限りませんので、定義エラーを起こしています。結果的にはモジュール違いのことが多いです。こういう場合、標準モジュールを使って、シートを指定しないでください。

次に、リテラルで、"1"と文字列を使っていますが、あまり、文字列で指定する方法はしません。VB/VBAは、こういうところが、曖昧なのですが、曖昧な部分に甘えていると失敗することがあります。

数字が文字列であるという確証がない場合は、数値にして比較するのが標準的です。

そして、また、Sheet1.Cells(1, 5) と、プロパティを指定していません。
Cells(1,5).Value か、Cells(1,5).Text [←あまり使いません]を使うかして、それを比較してください。

If Cells(1, 3).Value = 1 Then

最初は、標準的な文法に従って、マクロを作ってください。

Do While True

また、これでは、条件が成り立ちません。ですから、基本的にありえません。

エラーの原因を知りたいという気持ちは分らないわけではありませんが、1つずつ言及して直していったら、とても使える段階には至らないと思います。

基本的な構文や文法を覚えてから、エラーの原因を把握するようにしたほうが良いと思います。自己流や掲示板をみて、自分で加工している状態では、うまくなりません。特に、掲示板では、玉石混交で、ひどい内容の解答もあります。動けば文句ないだろう、と開き直られてしまいますので、どうしようもない方もいます。

エラーを把握するのは、それぞれのオブジェクトとプロパティを良く理解して、かなり高度な知識が必要になることが多いです。Visual Basic 側を使うようになってからでも遅くはありません。

九天社という出版社から、『Excel VBA 実践のツボ デバッグ編』という本があります。エラーについて書かれていますが、これらに出てくる内容は、あきらかに上級の内容です。この著者は、たぶん、コードの書き方からすると、VBAの専門ではないようですが、なかなか、VBAだけ勉強していっても届かないレベルの内容なのです。

あまり、入門レベルでは、考え込まないほうがよいと思います。

こんにちは。Wendy02です。

>エラーの原因ってのは結局どこなのか・・・。

失礼かもしれませんが、基本的なコードの部分で疑問の付くところが多いのです。その段階で、エラーの原因をお知りになっても、あまり役に立たないように思います。

>「1004)アプリケーション定義またはオブジェクト定義のエラーです」

今回は、ワークシートのオブジェクトとCellsの不整合のエラーだと思います。直接の原因は、Sheet1 とされたことが原因で、現在使用中のオブジェクトが、Sheet1 とは限りませんので、定義エ...続きを読む

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

QDo While ステートメントエラー

VBA初心者です。
VBAで作成したプログラムがエラーで止まってしまい、先に進まないのです。
わかる方いらっしゃいましたら、ご教示頂けないでしょうか。

<やりたいこと>
同じ形式の複数のエクセルBOOKに入っている特定の列の特定の行範囲にあるデータを、
別の集計用エクセルBOOKの単一のシートの中に順々にコピーをしていきたいのです。
集計用BOOKの特定の行には、データBOOKのBOOK名が横にずらっと記載されて
おり、集計用BOOKに組んだVBAでBOOK名を読み取り、そのBOOK名のデータBOOKを
開き、特定セル範囲(A2:A5)の値をコピーし、集計用BOOKのBOOK名が記載されて
いる列に貼り付けしていく。同様に、集計用BOOKの右どなりの列に記載されている
BOOK名を読み取り、そのBOOKを開き...と継続し、集計用BOOKにデータ用BOOK
名が記載されていない列まできたら、Do Whileステートメントを終了する、ということ
をやりたいのです。

<問題点>
実行させると、「実行時エラー'1004' 'Range'メソッドは失敗しました
:'Global'オブジェクト」なるメッセージが出て、先に進まないのです。

<プログラム>
Sub W()
Dim ファイル名 As String
Dim 列番号 As String
列番号 = c
Do While Range(列番号 & "5").Value <> ""
ファイル名 = Range(列番号 & "5").Value
Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx"
Range("A2:A5").Copy
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.Paste Range(列番号 & "6")
列番号 = 列番号 + 1
Loop
End Sub

<エラー発生部分>
Do While Range(列番号 & "5").Value <> ""

<補足>
ちなみに、VBAの組んであるBOOKは「学校」フォルダの中、データが入っている
BOOKは「データ」フォルダの中に格納されています。

以上お手数をおかけしますが、よろしくお願いいたします。

VBA初心者です。
VBAで作成したプログラムがエラーで止まってしまい、先に進まないのです。
わかる方いらっしゃいましたら、ご教示頂けないでしょうか。

<やりたいこと>
同じ形式の複数のエクセルBOOKに入っている特定の列の特定の行範囲にあるデータを、
別の集計用エクセルBOOKの単一のシートの中に順々にコピーをしていきたいのです。
集計用BOOKの特定の行には、データBOOKのBOOK名が横にずらっと記載されて
おり、集計用BOOKに組んだVBAでBOOK名を読み取り、そのBOOK名のデータBOOKを
開き、特定セル範囲...続きを読む

Aベストアンサー

1回目のループ終了時の「列番号=列番号+1」結果は「D」になりますか?おそらくならないと思います。エラー発生時にデバッグを押した後、列番号のところにカーソルを合わせると値表示がされるので、確認出来ます。

これが原因ならば、以下のように対策すればOKです。

Sub W()
Dim ファイル名 As String
Dim 列番号 As Long
列番号 = 3
Do While Cells(5,列番号).Value <> ""
ファイル名 = Cells(5,列番号).Value
Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx"
Range("A2:A5").Copy
ActiveWorkbook.Close
ThisWorkbook.Activate
ActiveSheet.Paste Cells(6,列番号)
列番号 = 列番号 + 1
Loop
End Sub

要は列番号をアルファベットでなく整数に変更し、セル表現をRangeからCellsに変更します。


人気Q&Aランキング