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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

解決済

5回答

1273閲覧

繰り返し処理での変数の宣言をし続ける方法

cretter

総合スコア91

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

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

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2020/08/13 12:54

前提・実現したいこと

このソースコードは入力された半角英語、数字、記号などを数字にして並べるものです。(暗号みたいに出来たらいいなと思い作っていました。)しかし、このソースコードだと50文字しか暗号化できず、どうにかwhileやforなどを使ってそのつど新しいstatic int ○○;や○○ = pasw;(○○は繰り返すごとに変わる)などを宣言し、何文字でも暗号化できるようにしたいのですがどうすればいいでしょう。教えてください。

該当のソースコード

java

1public class pass0202 2{ 3 static int loop = 0; //何ループ目か記録 4 static int pasw; //一時保存ID 5 static int p1; //3桁暗号化 6 static int p2; //↓ 7 static int p3; 8 static int p4; 9 static int p5; 10 static int p6; 11 static int p7; 12 static int p8; 13 static int p9; 14 static int p10; 15 static int p11; 16 static int p12; 17 static int p13; 18 static int p14; 19 static int p15; 20 static int p16; 21 static int p17; 22 static int p18; 23 static int p19; 24 static int p20; 25 static int p21; 26 static int p22; 27 static int p23; 28 static int p24; 29 static int p25; 30 static int p26; 31 static int p27; 32 static int p28; 33 static int p29; 34 static int p30; 35 static int p31; 36 static int p32; 37 static int p33; 38 static int p34; 39 static int p35; 40 static int p36; 41 static int p37; 42 static int p38; 43 static int p39; 44 static int p40; 45 static int p41; 46 static int p42; 47 static int p43; 48 static int p44; 49 static int p45; 50 static int p46; 51 static int p47; 52 static int p48; 53 static int p49; //↑ 54 static int p50; //3桁暗号化 55 public static void main( String[] args ) throws java.io.IOException 56 { 57 put( "文字は「英語の小文字」「半角数字」「空白」「,」「.」「!」「?」「-」合計50文字しか打てません" ); 58 put("Ver.2.0"); 59 put( "スタート v" ); 60 pas1(); 61 p1 = pasw; 62 pas1(); 63 p2 = pasw; 64 pas1(); 65 p3 = pasw; 66 pas1(); 67 p4 = pasw; 68 pas1(); 69 p5 = pasw; 70 pas1(); 71 p6 = pasw; 72 pas1(); 73 p7 = pasw; 74 pas1(); 75 p8 = pasw; 76 pas1(); 77 p9 = pasw; 78 pas1(); 79 p10 = pasw; 80 pas1(); 81 p11 = pasw; 82 pas1(); 83 p12 = pasw; 84 pas1(); 85 p13 = pasw; 86 pas1(); 87 p14 = pasw; 88 pas1(); 89 p15 = pasw; 90 pas1(); 91 p16 = pasw; 92 pas1(); 93 p17 = pasw; 94 pas1(); 95 p18 = pasw; 96 pas1(); 97 p19 = pasw; 98 pas1(); 99 p20 = pasw; 100 pas1(); 101 p21 = pasw; 102 pas1(); 103 p22 = pasw; 104 pas1(); 105 p23 = pasw; 106 pas1(); 107 p24 = pasw; 108 pas1(); 109 p25 = pasw; 110 pas1(); 111 p26 = pasw; 112 pas1(); 113 p27 = pasw; 114 pas1(); 115 p28 = pasw; 116 pas1(); 117 p29 = pasw; 118 pas1(); 119 p30 = pasw; 120 pas1(); 121 p31 = pasw; 122 pas1(); 123 p32 = pasw; 124 pas1(); 125 p33 = pasw; 126 pas1(); 127 p34 = pasw; 128 pas1(); 129 p35 = pasw; 130 pas1(); 131 p36 = pasw; 132 pas1(); 133 p37 = pasw; 134 pas1(); 135 p38 = pasw; 136 pas1(); 137 p39 = pasw; 138 pas1(); 139 p40 = pasw; 140 pas1(); 141 p41 = pasw; 142 pas1(); 143 p42 = pasw; 144 pas1(); 145 p43 = pasw; 146 pas1(); 147 p44 = pasw; 148 pas1(); 149 p45 = pasw; 150 pas1(); 151 p46 = pasw; 152 pas1(); 153 p47 = pasw; 154 pas1(); 155 p48 = pasw; 156 pas1(); 157 p49 = pasw; 158 pas1(); 159 p50 = pasw; 160 put(""); 161 System.out.println( p1 +""+ p2 +""+ p3 +""+ p4 +""+ p5 +""+ p6 +""+ p7 +""+ p8 +""+ p9 +""+ p10 +""+ p11 +""+ p12 +""+ p13 +""+ p14 +""+ p15 +""+ p16 +""+ p17 +""+ p18 +""+ p19 +""+ p20 +""+ p21 +""+ p22 +""+ p23 +""+ p24 +""+ p25 +""+ p26 +""+ p27 +""+ p28 +""+ p29 +""+ p30 +""+ p31 +""+ p32 +""+ p33 +""+ p34 +""+ p35 +""+ p36 +""+ p37 +""+ p38 +""+ p39 +""+ p40 +""+ p41 +""+ p42 +""+ p43 +""+ p44 +""+ p45 +""+ p46 +""+ p47 +""+ p48 +""+ p49 +""+ p50 ); //暗号化したものを表示 162 } 163 public static void pas1() throws java.io.IOException 164 { 165 int c = putcom1(); //入力したものを検出 166 pasw = c * 3 + 13; //暗号化 167 loop = loop + 1; //何回文字を打ったか記録 168 put( loop + "文字目" ); //何回文字を打ったか表示 169 } 170 public static int putcom1() throws java.io.IOException 171 { 172 int c = System.in.read(); //入力したものを検出 173 if( c == 10 || c == 13 ){ //入力したものを検出 174 return( putcom1() ); //入力したものを検出 175 } 176 return( c ); 177 } 178 static void put( String str ) //System.out.println();省略 179 { 180 System.out.println( str ); 181 } 182}

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

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

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

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

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

guest

回答5

0

List構造を使いましょう。最初に個数を考えず、いくつでも入れられます。

投稿2020/08/13 12:56

maisumakun

総合スコア146018

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

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

0

ベストアンサー

変換してすぐ文字列に足していけば、リストも配列もいらないです。
いつ終わるのかがわからなかったのでとりあえず改行で。

Java

1public class pass0202 { 2 static String pasw = ""; 3 4 public static void main(String[] args) throws java.io.IOException { 5 put("文字は「英語の小文字」「半角数字」「空白」「,」「.」「!」「?」「-」しか打てません"); 6 put("Ver.2.0"); 7 put("スタート"); 8 9 while (true) { 10 int c = putcom1(); 11 if (c < 0) break; 12 13 int i = c * 3 + 13; 14 pasw = pasw + i; 15 } 16 17 System.out.println(pasw); 18 } 19 20 static int putcom1() throws java.io.IOException { 21 int c = System.in.read(); 22 if (c == 10 || c == 13) { 23 return -1; 24 } 25 return c; 26 } 27 28 static void put(String str) { 29 System.out.println(str); 30 } 31}

投稿2020/08/13 14:19

TN8001

総合スコア9862

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

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

Daregada

2020/08/13 14:33

質問者は、同じプログラム内で、こいつを元に戻す処理も書きたかったんじゃないかと想像しています。そうでないと、50個も変数を書くなんてことをやらないのでは。
TN8001

2020/08/13 14:51

暗号化した以上当然復号もしたいでしょうけど、それとint変数って関係あります? intに数値が入っていればそれは簡単に戻るでしょうけど、それってカンニングですよね?^^; このコードでは1文字3桁の保証がありませんが、3桁固定なら比較的簡単に戻せますよね。
Daregada

2020/08/13 15:19 編集

intのリストに入っているのは変換後の数値なので、「カンニング」の意味が不明です。 現状では文字種指定が「単なるお願い」状態なので、文字列化したデータしかないと復号できる保証がありません。
TN8001

2020/08/13 15:36

カンニング・保証は置いておきます。 言いたいのはリストや配列を使わなくても、暗号化も複号も(お願いの範囲内なら)可能であろうってことだけです。
Daregada

2020/08/13 15:41

可能なことに異議はないよ。
TN8001

2020/08/13 15:45

了解です^^
guest

0

Java

1import java.io.IOException; 2 3class Encrypt { 4 public static void main(String[] args) throws IOException { 5 for (int c; (c = System.in.read()) >= ' '; ) 6 System.out.print(c * 3 + 13); 7 System.out.println(); 8 } 9} 10 11class Decrypt { 12 public static void main(String[] args) throws IOException { 13 for (byte[] b = new byte[3]; System.in.read(b) == 3; ) 14 System.out.write((Integer.valueOf(new String(b)) - 13) / 3); 15 System.out.println(); 16 } 17}

または

Java

1import java.io.IOException; 2 3class Encrypt { 4 public static void main(String[] args) throws IOException { 5 String s = ""; 6 for (int c; (c = System.in.read()) >= ' '; ) 7 s += c * 3 + 13; 8 System.out.println(s); 9 } 10} 11 12class Decrypt { 13 public static void main(String[] args) throws IOException { 14 String s = ""; 15 for (byte[] b = new byte[3]; System.in.read(b) == 3; ) 16 s += (char)((Integer.valueOf(new String(b)) - 13) / 3); 17 System.out.println(s); 18 } 19}

実行結果

text

1$ java Encrypt 2abc (入力) 3304307310 (出力) 4$ java Decrypt 5304307310 (入力) 6abc (出力)

投稿2020/08/13 19:46

編集2020/08/14 00:11
kazuma-s

総合スコア8224

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

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

0

Enterキー打つまでリストに登録するやつ。

Java

1import java.util.ArrayList; 2 3public class passXXXX { 4 public static void main(String[] args) throws java.io.IOException { 5 var destination = new ArrayList<Integer>(); 6 7 put("文字は「英語の小文字」「半角数字」「空白」「,」「.」「!」「?」「-」"); 8 put("Ver.X.X"); 9 put("Start"); 10 11 while (true) { 12 int c = putcom1(); 13 if (c == 10 || c == 13) { 14 break; 15 } 16 int pasw = pas1(c); 17 destination.add(pasw); 18 } 19 20 System.out.println(destination.toString()); 21 } 22 23 public static int pas1(int c) throws java.io.IOException { 24 return c * 3 + 13; 25 } 26 27 public static int putcom1() throws java.io.IOException { 28 return System.in.read(); 29 } 30 31 static void put(String str) { 32 System.out.println(str); 33 } 34}

投稿2020/08/13 13:48

編集2020/08/13 13:50
Daregada

総合スコア11990

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

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

0

こんな面倒なことしなくても、配列で定義すれば1行ですみますよ。

投稿2020/08/13 12:56

y_waiwai

総合スコア88042

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

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

maisumakun

2020/08/13 12:58

Javaの配列を直接使って、可変長のものを受け付けるようにするのはちょっと面倒かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問