Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

昨日に引き続き・・・・

昨日返信を下さった方々、ありがとうございました。
あれからいろいろ試行錯誤してあるものを作りたいのですが、
また行き詰りました。


String s = "\\u" + Integer.toHexString((int)('あ'));
System.out.println(s);
で、
\u3042
が出力されます。

これは昨日教えて頂いたとおりです。
が、しかし、
よくよく考えたら
\u3042のままで「あ」とは出力されません。

\\uはエスケープしているので\だけのはずですが、
\\と二つあるのかと思いchar型にして中身を見て見ましたが、

char[] c = s.toCharArray();
for(int i = 0; i < c.length; i++) {$
System.out.println(c[i]);$
}

\
u
3
0
4
2

と、\u3042になっている……


あるものを作るというのは
「3042」の部分が数値の状態の時に+1して次の文字に
さらにまた次の文字に……
と、いうプログラムを夏休みの課題で作るのですが、この部分でどうしても
詰まってます。


ごちゃごちゃしてしまったのでわかりやすくしますと、

int a = 3042;
a++;
String s = "\\u" + Integer.toString(a);
System.out.println(s); //ここで「い」の出力が欲しい。


と、いう感じなのですが、何かアドバイスいただけませんでしょうか?
よろしくお願いします。

9

回答

2560

閲覧

9件の回答

評価

0

内容 ちょっと意味が分からないのですが、

int a = 3042;

のところ、10進数になってるのがいけないとか、そういうこと?
なら

int a = 0x3042;

でOKじゃないですか? 

評価

0

こんにちは。
返信ありがとうございます。
ご指摘のとおりに0x3242と
してみたのですが、これだけではうまくいかず、以下のようにしてみました。

int a = 0x3042;
String s = "\\u" + Integer.toHexString((int)a);
System.out.println(s);

これでもまだ出力は\u3042のままです。

評価

0

>こんにちは。
>Unicode表記について質問なのですが、
>たとえば、
>
>System.out.println("\u3042");
>
>と、すると、画面には「あ」が出力されます。
>これとは逆に「あ」と入力があった際に
>「\u3042」を出力させる方法はどのような
>ものがありますでしょうか?

なんか、最初やりたかったことと違うことのような気が。
そのプログラムで\u3042と出力されるのは正常ですよ。

結局、文字が入力されたときに文字コードを出したいんじゃなくて、文字コードを入力したときに文字を出したいんですか?

評価

0

話がわかりにくくなってすみません。

まとめますと、

・ユーザに文字を入力してもらう。
・その文字コードをいじって別の文字にする。(次の文字やそのまた次の文字など)
・出力する。

この動作をさせるなかで

数値として3042を加工した後に
\uと結合させて文字として出力するというところで
詰まってます。


数字、文字列をUnicodeに変換などで検索しても
エンコーディングをEUCからUnicodeへ
みたいなのばかりが出てきてしまいます・・・

評価

0

じゃぁ変換なんて必要ないですね。char型変数に入れて、それを使って+1やら+2やらすればいいです。

評価

0

多分、用語を間違えて使いすぎなのが原因ですね。用語はきちんと使いましょう。

>これとは逆に「あ」と入力があった際に
>「\u3042」を出力させる方法はどのような
>ものがありますでしょうか?

これでは\u3042を画面に表示させたい、と思われます。
やりたかったことは、「あ」を他の文字に変換したかったのですから、「あ」という文字を「い」という文字に変換する方法を直接聞いたほうがよかったと思います。

自分で考えたロジックで詰まったところを聞くのも大事ですが、それよりも「何がしたいのか」が大事な場合があります。

質問の仕方に正解はないと思いますが、
「こういうこと(最終的な目標)がしたく、こういうロジック(豆。さんがまとめた内容のようなもの)を考えました。しかし、ここ(うまくいかない部分)がうまくいきません。」
のような質問のほうがいいのかな、と思います。

評価

0

なるほど!!
char型はそういうこともできるのでしたね。
忘れてましたが、どこかで聞いたことがありました。

ありがとうございました!

評価

0

すみません。
行き違いで見れてなかったのですが、

質問の仕方のアドバイスありがとうございます。
自分は作文をはじめ、文章を書いたりするのが下手なのでこれからはJavaうんぬんというより’言語’そのものをしっかりさせたいと思います。

評価

0

またまたこんにちは。
夏休みの課題!!こおばしい!!!
で、'あ'の次の字を出力したいのなら……

public class Test {
 public static void main(String argv[]) {
  char c = 'あ';
  c++;
  System.out.println(c);
 }
}

でいいのではと思います。

 が!いくつか問題があります。それは……単純に値を+1しても50音表の次の文字になるとは限らないということです。Unicodeなら'あ'の次は'ぃ'ですし、'か'の次は'が'ですし'な'の次は'に'となります。
http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF
この辺を見るとわかるかも。'あ'の次は'い'でなくてもいいというのなら問題はないのですが……。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。