前提・実現したいこと→出来ていること
自分が実現したいことは、配布された暗号表を二次元配列に格納し、その後、標準入力した値と同じ要素が入っている格納場所の要素番号を暗号とする。
自分の書いたプログラムだと、Goodと入力しても、出力では空白で返ってきてしまいます。
プログラムのどの部分を直したら、 71 55 55 34 と出力できるのかを知りたいたいです。
→
暗号表を読み込み、二次元配列に格納することまでは確認できました。
(↓配布されたsample.txt)
A,B,C,D,E,F,G,H,I J,K,L,M,M,O,P,Q,R S,T,U,V,W,X,Y,Z,a b,c,d,e,f,g,h,i,j k,l,m,n,o,p,q,r,s t,u,v,w,x,y,z,1,2 3,4,5,6,7,8,9,!,' #,$,”,&,(,),=,.,[ @,{,},:,;,-, ,?,_
入力が Good だとすると、
出力が 71 55 55 34 となる。
発生している問題・エラーメッセージ
困っていることにエラーメッセージは出ず、自分の考えでは繰り返しfor文の部分が
間違えているのではないかと思っています。
現段階のソースコード
java
1package ABC; 2 3import java.io.File; 4import java.io.FileNotFoundException; 5import java.util.Scanner; 6 7public class abc { 8 public static void main(String[] arg){ 9 10 String[][] data=new String[10][10]; 11 String[] data1=new String[1000]; 12 int M=1,N=1; 13 14 //ファイル:sample.txtを読み出す 15 try{ 16 File f=new File("sample.txt"); 17 Scanner s=new Scanner(f); 18 s.useDelimiter(",|\n"); 19 20 //読み出したデータを2次元配列に格納する 21 while(s.hasNext()){ 22 data[M][N]=s.next(); 23 System.out.print(data[M][N]); 24 if(M<9) { 25 M++; 26 }else { 27 N++; 28 M=1; 29 } 30 } 31 }catch(FileNotFoundException e){ 32 System.out.println("ファイルがありません"); 33 } 34 35 //暗号化したい文字を入力する。 36 System.out.print("入力:"); 37 Scanner u=new Scanner(System.in); 38 String sentence =u.nextLine(); 39 String[] sentenceArray=new String[sentence.length()]; 40 41 //入力した文字を一文字ずつ配列に格納する。 42 System.out.print("暗号化:"); 43 for(int i=0;i<sentence.length();i++){ 44 sentenceArray[i]=String.valueOf(sentence.charAt(i)); 45 } 46 47 //↓からうまく作動しない 48 for(int i=0;i<sentenceArray.length;i++) { 49 String value1=sentenceArray[i]; 50 for(M=1;M<10;M++) { 51 for(N=1;N<10;N++) { 52 String value=data[M][N]; 53 if(value==value1) { 54 System.out.print(M+N+" "); 55 } 56 } 57 } 58 } 59 } 60}
試したこと
for文が間違っているのではと思い、do-while文やwhile文に変えましたがうまくいきませんでした。
///GW中に理解できるようにしたいのでよろしくお願いします。///
回答2件
あなたの回答
tips
プレビュー