プロが教えるわが家の防犯対策術!

javaの課題で正の整数を入力したらその数を花文字に変換するという課題が出ました。1~9の数字を花文字として表せるようにしましたが、そのプログラムを実行すると入力した数字と違う数字が花文字で出力します。どこがおかしいのか教えてもらえませんか? 下のは自分の書いたプログラムです。
package ensyuu5;

import java.util.Scanner;

import javax.swing.plaf.basic.BasicComboBoxUI.ItemHandler;
import javax.xml.namespace.QName;

class ensyuu5 {

public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
int num;
do{
System.out.print("正の整数(最大8桁)を入力してください:");
num = stdIn.nextInt();
}while( num < 0 || num > 99999999);


int count = String.valueOf( num ).length();

for (int c = count,keta = num; c >= 1; c--){
keta = (keta / 10 ^ (c - 1));
if (keta % 10 == 0 || keta % 10 == 2 || keta % 10 == 3 || keta % 10 == 5 || keta % 10 == 6 || keta % 10 == 7 || keta % 10 == 8 || keta % 10 == 9){
System.out.print(" **** ");
}
else if (keta % 10 == 1){
System.out.print(" ** ");
}
else if (keta % 10 == 4){
System.out.print(" * * ");
}
}
System.out.println();

for (int c = count,keta = num; c >= 1; c--){
keta = (keta / 10 ^ (c - 1));
if (keta % 10 == 0 || keta % 10 == 8 || keta % 10 == 9){
System.out.print(" * * ");
}
else if (keta % 10 == 1){
System.out.print(" * ");
}
else if (keta % 10 == 2 || keta % 10 == 3 || keta % 10 == 7){
System.out.print(" * ");
}
else if (keta % 10 == 4){
System.out.print(" * * ");
}
else if (keta % 10 == 5 || keta % 10 == 6){
System.out.print(" * ");
}
keta = num;
}
System.out.println();

for (int c = count,keta = num; c >= 1; c--){
keta = (keta / 10 ^ (c - 1));
if (keta % 10 == 0){
System.out.print(" * * ");
}
else if (keta % 10 == 1){
System.out.print(" * ");
}
else if (keta % 10 == 8 || keta % 10 == 3 || keta % 10 == 4 || keta % 10 == 5 || keta % 10 == 6 || keta % 10 == 2 || keta % 10 == 9){
System.out.print(" **** ");
}
else if (keta % 10 == 7){
System.out.print(" * ");
}
keta = num;
}
System.out.println();

for (int c = count,keta = num; c >= 1; c--){
keta = (keta / 10 ^ (c - 1));
if (keta % 10 == 0 || keta % 10 == 8 || keta % 10 == 6){
System.out.print(" * * ");
}
else if (keta % 10 == 1 || keta % 10 == 4){
System.out.print(" * ");
}
else if (keta % 10 == 2){
System.out.print(" * ");
}
else if (keta % 10 == 3 || keta % 10 == 5 || keta % 10 == 9 || keta % 10 == 7){
System.out.print(" * ");
}
keta = num;
}
System.out.println();

for (int c = count,keta = num; c >= 1; c--){
keta = (keta / 10 ^ (c - 1));
if (keta % 10 == 0 || keta % 10 == 1 || keta % 10 == 2 || keta % 10 == 3 || keta % 10 == 5 || keta % 10 == 6 || keta % 10 == 8 || keta % 10 == 9){
System.out.print(" **** ");
}
else if (keta % 10 == 4){
System.out.print(" * ");
}
else if (keta % 10 == 7){
System.out.print(" * ");
}
keta = num;
}
}
}

質問者からの補足コメント

  • 花文字というのは「*」このマークで表すことです。例えば2だったら
    ****
       *
    ****

    ****
    といった感じです

      補足日時:2022/01/07 15:21

A 回答 (7件)

インデントが消えてしまっていたので再送です


https://harigami.net/cd?hsh=a7c4ab4b-25f9-4acb-8 …
    • good
    • 0

import java.util.Scanner;



import javax.swing.plaf.basic.BasicComboBoxUI.ItemHandler;
import javax.xml.namespace.QName;

class ensyuu5 {

public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int num;
do {
System.out.print("正の整数(最大8桁)を入力してください:");
num = stdIn.nextInt();
} while (num < 0 || num > 99999999);

int count = String.valueOf(num).length();

for (int c = count, keta = num; c >= 1; c--) {
keta = (keta / (int) Math.pow(10, c - 1));
if (keta % 10 == 0 || keta % 10 == 2 || keta % 10 == 3 || keta % 10 == 5 || keta % 10 == 6 || keta % 10 == 7
|| keta % 10 == 8 || keta % 10 == 9) {
System.out.print(" **** ");
} else if (keta % 10 == 1) {
System.out.print(" ** ");
} else if (keta % 10 == 4) {
System.out.print(" * * ");
}
keta = num;
}
System.out.println();

for (int c = count, keta = num; c >= 1; c--) {
keta = (keta / (int) Math.pow(10, c - 1));
if (keta % 10 == 0 || keta % 10 == 8 || keta % 10 == 9) {
System.out.print(" * * ");
} else if (keta % 10 == 1) {
System.out.print(" * ");
} else if (keta % 10 == 2 || keta % 10 == 3 || keta % 10 == 7) {
System.out.print(" * ");
} else if (keta % 10 == 4) {
System.out.print(" * * ");
} else if (keta % 10 == 5 || keta % 10 == 6) {
System.out.print(" * ");
}
keta = num;
}
System.out.println();

for (int c = count, keta = num; c >= 1; c--) {
keta = (keta / (int) Math.pow(10, c - 1));
if (keta % 10 == 0) {
System.out.print(" * * ");
} else if (keta % 10 == 1) {
System.out.print(" * ");
} else if (keta % 10 == 8 || keta % 10 == 3 || keta % 10 == 4 || keta % 10 == 5 || keta % 10 == 6
|| keta % 10 == 2 || keta % 10 == 9) {
System.out.print(" **** ");
} else if (keta % 10 == 7) {
System.out.print(" * ");
}
keta = num;
}
System.out.println();

for (int c = count, keta = num; c >= 1; c--) {
keta = (keta / (int) Math.pow(10, c - 1));
if (keta % 10 == 0 || keta % 10 == 8 || keta % 10 == 6) {
System.out.print(" * * ");
} else if (keta % 10 == 1 || keta % 10 == 4) {
System.out.print(" * ");
} else if (keta % 10 == 2) {
System.out.print(" * ");
} else if (keta % 10 == 3 || keta % 10 == 5 || keta % 10 == 9 || keta % 10 == 7) {
System.out.print(" * ");
}
keta = num;
}
System.out.println();

for (int c = count, keta = num; c >= 1; c--) {
keta = (keta / (int) Math.pow(10, c - 1));
if (keta % 10 == 0 || keta % 10 == 1 || keta % 10 == 2 || keta % 10 == 3 || keta % 10 == 5 || keta % 10 == 6
|| keta % 10 == 8 || keta % 10 == 9) {
System.out.print(" **** ");
} else if (keta % 10 == 4) {
System.out.print(" * ");
} else if (keta % 10 == 7) {
System.out.print(" * ");
}
keta = num;
}
}
}

このようにすれば動きます
なぜ動かなかったのかは自分で考えてみてください

無駄をなくしたverも添えておきますので勉強の役に立ててください
https://harigami.net/cd?hsh=01ae3482-b088-4014-8 …

また何か分からないことがあったら気軽に聞いて下さい
    • good
    • 3

チャレンジ問題も頑張ってください!

    • good
    • 8

具体的に「何がどうなること」を問題としているのかわからんけど....



使っている演算子の意味は, 完全に理解できているよね?
    • good
    • 0

描画カーソルを移動できない環境向けならば、


繰り返し処理を工夫して行ごとに描画しましょう。

for (行=0; 行<幅; 行++) {
_ for (字=0; 字<字数; 字++) {
_ _ for (桁=0; 桁<幅; 桁++) {
_ _ _ 数 = 入力値から指定した位の数を取得(字)
_ _ _ 点 = 数を表す字形にて指定位置の点灯有無を判定(数, 桁, 行)
_ _ _ 出力(点? "*": " ")
_ _ }
_ _ 出力(文字間隔)
_ }
_ 出力(改行)
}
    • good
    • 0

> 花文字というのは「*」このマークで表すことです。



何?それをキミが通ってる学校では「花文字」って呼んでるの?
なんつーローカル定義だ・・・・・・。
正式名称は「アスタリスク」だ。覚えておいた方がいいだろう。

> 例えば2だったら

なるほど。
でもそれだけじゃあ全然足りない。
0〜9の全部の定義を出さないと他人が見てどーの、とは言えないよ。
こういうのは定義次第、なんだ。
    • good
    • 0

うん、その前にだな。



「花文字」って何?
どう考えても一般的な用法に思えないんだけど。

花文字とは:
http://hanamoji.info/index.php?%E8%8A%B1%E6%96%8 …

そこが他人に分かるようにキチンと説明出来なければ、「どこがおかしいのか」なんか答えようがない。
だって何が正解なんだかサッパリ分かんないんだもん。
「javaが上手くいきません」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!