2012-02-27 11 views
2

私はJavaの方が新しいので、このタイプの割り当てを扱うすべての方法に慣れていません。私は高校を通してCとC#を勉強しましたが、私は数日前にJavaを始めました。配列から与えられたスキームを介して文字への "エンコード"

タスクは、このように書きます: 桁対応する文字 0- 1-B:

は10一桁の整数を読み取り、符号化方式を使用して 10の文字からなる文字列を表示するプログラムを書きます 2-c ... ... 9-j たとえば、入力が10桁の1 8 6 1 0 3 1 8 5 5からなる場合、アプリケーション は "bigbadbiff"で応答します。私がCおよびC#から移動するので

は、最初に私はトラブルを入力するユーザーの配列の整数を許可していたが、私はそれを考え出しました。そしてこれは私が今までに得たものです。

import java.util.*; 

public class UnsualCoding 
{ 
    public static void main (String[] args) 
    { 
     Scanner util = new Scanner(System.in); 
     int[] x = new int[5]; 
     int counter = 0; 

     for(int i = 0; i < x.length && util.hasNextInt(); i++) 
     { 
      x[i] = util.nextInt(); 
      counter++; 
     } 

     System.out.println("\n\n"); 
     System.out.println("Our array looks like"); 

     for(int i = 0; i < x.length; i++) 
     { 
      System.out.println(x[i]); 
     } 

     System.out.println("\n\n"); 

    } 

} 

リストを作成し、配列のコンテンツをコピーして変更しますか、この問題に別の方法でアプローチする必要がありますか?配列を文字列に変換できますか?また、どのように私はバインド/指定された数字に文字を割り当てることができますか?

ありがとうございます。

+0

これは学校の割り当てですか?もしそうなら、それは '宿題 'とタグ付けされるべきです –

答えて

1

のみ10可能性があるので、あなたは配列にエンコードしたい文字を入れて、その配列のインデックスとして、int型の入力を使用することができます。

char[] y = new char[]{'a','b','c','d','e','f','g','h','i','j'}; 

その後、あなたはそれをプリントアウトするところだろう変化するであろうあなたのコードの一部のみ:あなたにも任意の長さであるためにあなたのxの配列を変更することがありますが

System.out.println(y[x[i]]); 

+0

ありがとう、これは私の問題を解決しました、簡単で華麗なアイデア。もう一度ありがとうございます。 –

0

Map各数値は文字にすることができます。次に、入力文字列にある各番号のMapから引き出します。検索されたすべての文字を追跡するにはStringが必要です。その後、作成されたStringを返すことができます。

+0

私はこれ以上調べています。答えをありがとう! :) –

0

まず、の数字と文字を表す文字の間にのマッピングが必要です。 マッピングが必要なときは、が最も便利です。Map!コンテンツのあなたの印刷中

Map <Integer, Character> digitToCharacter = new HashMap<Integer, Character>(); 
char baseCharacter = 'a'; 
for (int i = 0; i< 10 ; i++) { 
    digitToCharacter.put(i, baseCharacter++); 
} 

System.out.println("--" + digitToCharacter.get(1)); 

for(int i = 0; i < x.length; i++) 
    { 
     System.out.println(x[i]); 
    } 

あなたは、単にマップから値を取得する必要があります:

for(int i = 0; i < x.length; i++) 
    { 
     System.out.println(digitToCharacter.get(i))); 
    } 

いますが、Stringを必要とするので、あなたがする必要はありません値を出力に書き出します。単一の文字列に追加する必要があります。

String result = null; 
    for(int i = 0; i < x.length; i++) 
    { 
     result += digitToCharacter.get(i)); // that isn't performace optimal, but it's enough and good for begginer 
    } 
+0

ありがとう、私は今日、私の他の任務のためにこれを必要とするでしょう。 –

1

あなたはこのようにそれを行うことができます。

Scanner input = new Scanner(System.in); 
int count = 10; 
StringBuilder result = new StringBuilder(count); 
for(int i = 0; i < count; i++) result.append((char)(input.nextInt() + 'a')); 
System.out.println(result); 

INPUT:

1 8 6 1 0 3 1 8 5 5 

OUTPUT:

bigbadbiff 
+0

短くて効果的です、お時間をありがとうございます。 –

0

リストを作成し、配列のコンテンツをコピーして変更するか、この問題に別の方法で対処する必要がありますか?

あなたは結果を蓄積するために、リストを使用することができ、またはあなたは(あなたが個々の文字を印刷するのにSystem.out.print(ch)を使用することができます)、それを蓄積するよう、あなたは結果を印刷することができます。

また、指定された数字に文字をバインド/割り当てするにはどうすればよいですか?

あなたは宣言することができます:

char[] symbols = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}; 

その後、symbols[d]が数字dためsymbolです。

ユニコードでは、小文字はアルファベット順に連続した文字コードの範囲を占め、算術演算を使用して次の文字のコードポイントを計算します。char symbol = (char) ('a' + digit);

+0

ありがとうございます、私は割り当ての代わりの解決策としてこれを使用します。 –