JAVAAppletの配列についてフィールドで宣言は?
- 初心者向けのJAVAAppletの配列についてフィールドで宣言する方法について質問です。
- 配列のフィールド宣言方法に関するエラーについての質問です。
- 配列を他のメソッド内で使用する方法についての疑問です。
- ベストアンサー
JAVAAppletの配列についてフィールドで宣言は?
はじめまして。よろしくお願いいたします! 私は、JavaAppletを始めたばかりで初心者です。 実は、学校の課題のJAVAAppletの配列についてなのですが 配列はフィールドで宣言できないのでしょうか? 例えば… public class RandomNumbers extends Applet{ int ave=0; int[ ] value; value = new int [8]; public void paint(Graphics g){ for (int i = 0; i < value.length; i++){ value[i] = (int)(Math.random()*10+1); g.drawString(String.valueOf(value[i]), 30+30*i, 30); } for(int j=0;j<value.length;j++){ ave = value[j]+ave; } g.drawString(String.valueOf(ave), 30, 60); } } 上記のように記述すると、「int[] value;」の「;」にエラーが発生してしまいます。 valueの配列の生成文には問題は発生しません。 課題ではinitメソッドを使用し、このほかにもメソッドを追加する必要があるのですが、他のメソッド内でvalueの配列は使うことは出来ないのでしょうか? 回答していただければ幸いです;;
- watarupopo
- お礼率100% (1/1)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 配列はフィールドで宣言できないのでしょうか? できますよ。 問題は、その下の行の「value = new int [8];」です。クラス定義の地の部分に(フィールド定義以外の)代入文が現れているのでエラーになっています。 フィールド定義で初期化も行うか、コンストラクタ・初期化ブロックなどでvalueに値を入れればOKです。 フィールド定義で初期化も行う例 ----------------------------------- int[] value = new int [8]; ------------------------------------------------------------------ 初期化ブロックで代入する例 --------------------------------------- int[] value; { value = new int [8]; } ------------------------------------------------------------------
関連するQ&A
- Javaの二次元配列についてです
配列要素を 1, 2, 3, 4, 5 2, 2, 3, 4, 5 3, 3, 3, 4, 5 4, 4, 4, 4, 5 5, 5, 5, 5, 5 のようにしたいのですがどうすればよろしいでしょうか? int[][] a = new int[5][5]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { ~ここの処理を教えてください~ } }
- ベストアンサー
- Java
- 配列について
class Array01{ public static void main(String[] args){ int[][] ia = {{11,12},{21},{41,42,44}}; for(int i = 0; i < ia.length; i++){ for(int j = 0; j < ia[i].length; j++ ){ System.out.print(ia[i][j] + " "); } System.out.println(); } } } } (i < ia.length) と (j < ia[i].length)のとこの意味が分かりません。特にiaとia[i]の違いなんか教えてもらえると助かります。for文については理解してるんですが・・・
- ベストアンサー
- Java
- ファイル読み込みを配列に入れる方法
ファイルから数字を読み込んで 並び替えて出力するプログラムを作成しているのですが ファイルから一度に配列に取り込んで、その配列で並び変えたいのですが取り込みができないのです、int型の配列に一度に取り込むのは可能なのでしょうか? import java.io.*; class Sort { public static void main(String[] args) { String path = args[0]; File file = new File(path); FileReader fr = null; int[] buf = new int[(int)file.length()]; try { fr = new FileReader(file); fr.read(buf); for (int i=0; i<buf.length-1;i++) { int mini=buf[i]; int miniIndex = i; for(int j = i+1; j<buf.length;j++){ if(buf[j] < mini){ mini = buf[j]; miniIndex = j; } } buf[miniIndex] = buf[i]; buf[i] = mini; } for(int i =0; i<buf.length;i++) { System.out.print( buf[i]+","); } } catch (IOException e) { System.out.println("ファイル入力エラー"); } } } と作ってみたのですが‥ ご教授お願いいたします。
- ベストアンサー
- Java
- 配列を後ろから数えるには?
例えば配列を前からならこのようになるはずです class TestIntArray { public static void main(String args[]) { int vi[] = {0, 1, 2, 3, 4, 5, 6}; for (int i = 0; i < vi.length; i++) System.out.println("vi[" + i + "] = " + vi[i]); } ですが逆に配列を後ろからならどうしたらいいのでしょうか? 今回の場合は6543210を出力させるのが目的です 今までずっと配列って言ったら for (int i = 0; i < vi.length; i++)がほぼ定形分ように頭にはいっていますので考え方がわからないです。 ヒントやアドレスをお願いします。
- ベストアンサー
- Java
- どこがエラーか確認してください…
プログラムを作ったのですが、さまざまなエラーが出てしまいます。 与えた引数を数字と文字にわけるというプログラムです。 public class Selection { private static final char[] nch = { '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' };//0から9までの数字をchar型配列要素として定義 public static String numbersonly(String inputstr) { StringBuffer bfn = new StringBuffer(); for (int i = 0 ; i < inputstr.length(); i++) { for (int j = 0;j < nch.length() ; j++) { if(inputstr.charAt(i) == nch[j]) bfn.append(inputstr.substring(i)); //bfnにinsputstrのi番目の文字を付け足す } } return; bfn.toString(); //bfnをstring型に変えて戻り値 } //numbersonlyメソッドの場合と同様に以下も補う public static String lettersonly(String inputstr) { StringBuffer bfn =new StringBuffer(); boolean let; for (int i = 0; i < inputstr.length(); i++) { let = true; for(int j = 0; j < nch.length(); j++) { if(inputstr.charAt(i) == nch[j]) let =false; } if (let)bfn.append(inputstr.substring(i)); } return;bfn.toString(); } } はじめのchar型配列要素として定義するところでシンボルを解決できません、となっているので、そのほかのnchを使う部分(lengthメソッド、戻り値)にも影響が出ているのか、jのlengthメソッドもどちらともシンボル解決できず、それぞれreturnでは戻り値がありません、となります。
- ベストアンサー
- Java
- 配列
最後にもう一つだけお願いします。ずっと格闘しても解決できません・・ 配列の中の数字で、偶数を全て奇数の前にもって行きます 例) {1,0,1,0,0,1,1} → {0,0,0,1,1,1,1} {3,3,2} → {2,3,3} {2,2,2} → {2,2,2} 流れとしては、まず奇数の数を数えます。これは何回シフトするから知るためです。 配列0から奇数を探し、あればそれを一番最後の配列へとシフトします。 奇数を探す作業が一度終わっても、まだシフトさせないといけない奇数があるかもしれないので(奇数が連続で並んでる場合)、最初に数えた奇数の数分だけちゃんとシフトするようにしようと思います。 public void evensLeft(int[] array) { int odd=0; for (int i = 0; i < array.length; i++) { if(array[i]%2!=0) odd++; //奇数の個数 } while (odd>0) { //奇数分シフトするためのカウント for(int j=0;j<array.length;j++){ //奇数を探す if (array[j] % 2 != 0) { odd--; //奇数のカウントを1減らす for (int k = j; k < array.length-1; k++) { //その奇数を一番最後に移動 int temp = array[k+1]; array[k+1] = array[k]; array[k] = temp; } } } } return array; } いくつかの例では動くのですが、{3,3,2}の例だと配列0に3が来てしまいます。色々変えてみても結果無理でした・・・ どなたかご教授お願いします。
- ベストアンサー
- Java
- 多次元配列のソートがうまくいかない
多次元配列のソートがうまくいかない 質問失礼します. 以下のような,String型,int型,double型の混在した多次元配列([3][3]の配列)をソートするプログラムを作成しました. このプログラムでは3番目の項目でソートを行っています. 問題点なのですが, 3番目の項目がdouble型の一桁(例えばarray[1][2]が2.0)ならばうまくソートできるのですが, 一つを2桁(例えばarray[1][2]を10.0)にすると何故か先頭の数(10.0の場合1)を基準にソートされてしまっているようです・・・ 配列へのデータの入れ方が間違っているのでしょうか? 原因がはっきりわからず困っているのですが, わかる方いましたらよろしくお願いします. public class Sort_test { /** * @param args */ public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ String[][] array = new String[3][3]; array[ 0 ][ 0 ] = "A"; array[ 0 ][ 1 ] = 2001+""; array[ 0 ][ 2 ] = 9.0+""; array[ 1 ][ 0 ] = "B"; array[ 1 ][ 1 ] = 1001+""; array[ 1 ][ 2 ] = 2.0+""; array[ 2 ][ 0 ] = "C"; array[ 2 ][ 1 ] = 3001+""; array[ 2 ][ 2 ] = 6.0+""; TheComparator comparator = new TheComparator(); // 3番目の項目でソートするように設定 comparator.setIndex( 2 ); // ソート実施 Arrays.sort( array, comparator ); dump(array); } public static void dump( String[][] array ) { for ( int i = 0;i < array.length;i++ ) { for ( int j = 0; j < array[ i ].length;j++ ) { System.out.print( "\t" + array[ i ][ j ] ); } System.out.println(); } } } //多次元配列ソート用クラス class TheComparator implements Comparator { /** ソート対象のカラムの位置 */ private int index = 0; /** ソートするためのカラム位置をセット */ public void setIndex( int index ) { this.index = index; } public int compare( Object a, Object b ) { String[] strA = ( String[] ) a; String[] strB = ( String[] ) b; return ( strA[ index ].compareTo( strB[ index ] ) ); } }
- ベストアンサー
- Java
- String配列を扱うアルゴリズムについて
よりパフォーマンスの良いアルゴリズムが、 ございましたらご教示下さい。 数レコード分のDBテーブルデータが格納されたString[][]型が存在するとします。 配列の要素は、String[行(フィールド)][列(カラム)]です。 ここで、全レコード中の列ごとの最大文字列長を int[]型に取得したいと思います。 そうした場合、自作した下記の処理よりも、 よいパフォーマンスを得られるアルゴリズムがございましたら、 ご教示願いたいと思います。 ※処理前提条件 ●String[][]型変数に、過不足無くテーブルデータが格納済みであるとします。 ●配列の第一(行)・第二(列)要素の最大値は取得済みであるとします。 ////////////// // 変数定義 // ////////////// String[][] tableData; ← テーブルデータ格納済み(過不足はありません) int 行数 = 全行数(取得済み); int 列数 = 全列数(取得済み); //列毎の最長文字列値を格納する。 int[] maxLen = new int[列数]; ////////// // 処理 // ////////// //列の個数分、処理を繰り返す for(int i = 0; i < 列数; i++) { //行の個数分、処理を繰り返す for(int j = 0; j < 行数; j++) { //NULLを回避する if(tableData[i][j] != null) { //int配列に格納済みの数値より大きければ、改めて格納する if(maxLen[i] < tableData[i][j].length()) { maxLen[i] = tableData[i][j].length(); } } } } 以上です、どなかお知恵をお貸し頂けませんか。 宜しくお願い致します。
- ベストアンサー
- Java
- 配列を使った・・・。
配列を使って簡単な迷路を作っているのですが、なかなかうまくいきません。 0を" "1を"■"を表示させたいのですがうまくいきません。 何処を直せばいいのか教えてください。 public class Sample1 { public static void main (String[]args) { int [][] data = { {1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1}, {1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1}, {1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1}, {1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,0,0,1,1,1}, {1,1,1,1,1,0,0,0,0,1,0,1,0,0,0,0,1,1,1,1}, {1,1,1,1,1,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1}, {1,1,1,1,0,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1}, {1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1}, {1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}, {1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} }; for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { System.out.print(data [i][j]); } if(data [i][j] = 1){ System.out.println("■"); }else{ System.out.println(" "); } } } }
- ベストアンサー
- Java
- フィボナッチ数列の配列について
public class Fibonacci { public static void main(String[] args) { int [] fibAray = new int [20]; //フィボナッチ数列用の配列 fibAray[4] = 3; fibAray[1] = 1; for (int i = 0; i < fibAray.length; i++) { fibAray[i] = i + 1; } for (int i = 0; i < fibAray.length; i++) { System.out.println( "第" + (i + 1) + "頁は" + 3); } } } フィボナッチ数列の第20項までを配列にし、それらを"第4項は3"のように表示する。 という問題で作ったプログラムですが1項~20項まで3と表示されます。 これで合ってるのでしょうか?
- ベストアンサー
- Java
お礼
解決しました。本当にありがとうございました。 私のミスだったようですね…。 これからもよろしくお願いいたします!