2

数字をデジタル形式で表示できるのかと思っています。これでは、コンソールから番号を受け入れています。

例えば:

123 should be display in following format, and in one line.
  _  _
| _| _|
| |_ _|

スイッチケースを使ってみましたが、適切な方法がありません

"arg" is char array;
char c;
for(i=0;i<3;i++)
{
c=arg[i];
switch(char)
{

    case '1' : System.out.println("|");
               System.out.println("|");
               break;
    case '2' : System.out.println("-");
               System.out.println(" "+"|");
               System.out.println("-");
               System.out.println("|");
               System.out.println("-");
               break;

  same for all digit
}
}

私はこれが表示する正しい解決策ではないことを知っています。

これは、Javaを使用した代替手段ですか。

ジョーによって提案された更新されたコードを編集します。できます。

        /**
        * @author Amit
        */
        public class DigitalDisplay {
            /**
             * @param args
             */
                public static void main(String[] args) {
        String [][] num=new String[4][3];
        num[0][0]="|-|";
        num[0][1]="| |";
        num[0][2]="|_|";

        num[1][0]=" |";
        num[1][1]=" |";
        num[1][2]=" |";

        num[2][0]=" -|";
        num[2][1]=" _|";
        num[2][2]=" |_";

        num[3][0]=" -|";
        num[3][1]=" _|";
        num[3][2]=" _|";
        int[] input = {2,1,3}; 
        for (int line = 0; line < 3; line++)
        {          
            for (int inputI=0; inputI < input.length; inputI++)
            {
                int value = input[inputI];
                System.out.print(num[value][line]);
                System.out.print("  ");
            }          
            System.out.println();
        }
    }
}

**OUTPUT**

 -|   |   -|  
 _|   |   _|  
 |_   |   _|  

@ジョー:ありがとう。

4

6 に答える 6

4

複数の文字がある場合は、各行をスキャンして構築する必要があります。

以下はすべて擬似コードですが、Javaに変換できると確信しています。グリッドを作成し、各桁の幅と高さが同じであることを確認する必要があります。

1-各番号の初期データを設定します。これは、2次元配列(次元1:桁、次元2:線)として実行できます。例:

numbers[0][0] = "|-|"
numbers[0][1] = "| |"
numbers[0][2] = "|_|"

numbers[1][0] = "  |"
numbers[1][1] = "  |"
numbers[1][2] = "  |"

2-文字を構成する各行について、入力の各桁をスキャンし、適切な文字列を書き込みます。これにより、文字が1行ずつ作成されます。

input = [1,2,3]
digit_height = 3

for line digit_height:
   for digit in input:
       print numbers[digit][line]
       print "  " to space between characters
   print new line

これがJavaです。

    int[] input = {2,1,3}; 
    for (int line = 0; line < 3; line++)
    {          
        for (int inputI=0; inputI < input.length; inputI++)
        {
            int value = input[inputI];
            System.out.print(num[value][line]);
            System.out.print("  ");
        }          
        System.out.println();
    }
于 2012-05-21T13:37:59.353 に答える
1

ここにデジタル時計のいくつかの例があります、それはあなたに役立つかもしれませんデジタル時計

于 2012-05-21T13:37:57.360 に答える
1

最も簡単な方法は、8を描画して保存することです。次に、必要な数に基づいて、8のどのストロークを印刷する必要があり、どのストロークを印刷する必要がないかがわかります。

例:

8:

 _
|_|
|_|

1の場合、右半分を印刷するだけです。

|
| 

2の場合、対応するストロークを無視します。

  _
  _|
 |_

他の人も同様です。これは、7セグメントディスプレイが実際に機能する方法でもあります。

必要な7つのストロークの値を配列に格納します。次に、8の場合、配列は次のようになり{1,1,1,1,1,1,1} ます。1の場合、配列は次のようになります。{0,0,0,1,0,0,1}ここで、0はストロークを印刷しないことを意味し、1はストロークを印刷することを意味します。

次に、この配列に基づいて、ストロークを印刷します。単にswitchケースを持って、すべての番号に対応するものを印刷するよりも優れています。配列要素をループして、ストロークを印刷するかどうかを決定します。

あなたが与えた例では、123、2D配列があります。値は行くことができます{{0,0,0,1,0,0,1},{1,0,1,1,1,1,0},{1,0,1,1,0,1,1}}

次に、配列の値を比較して、ストロークを印刷します。

編集:サンプルコード:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s;
s = br.readLine();
int n;
n = Integer.parseInt(s);
int stroke = 1;
int arr[] = new int[8];
if(s == 2)
    arr[] = {1,0,1,1,1,1,0};
for(int i=0;i<8;i++)
{
if(arr[i] == 1 && stroke = 1)
   System.out.println(" _");
   stroke++;
   break;
if(arr[i] == 1 && stroke = 2)
   System.out.print("|");
   stroke++;
   break;
if(arr[i] == 1 && stroke = 3)
   System.out.print("_");
   stroke++;
   break;
if(arr[i] == 1 && stroke = 4)
   System.out.println("|");
   stroke++;
   break;
if(arr[i] == 1 && stroke = 5)
   System.out.print("|");
   stroke++;
   break;
if(arr[i] == 1 && stroke = 6)
   System.out.println("_");
   stroke++;
   break;
if(arr[i] == 1 && stroke = 7)
   System.out.println("|");
   stroke++;
   break;
}

1つの番号が印刷されたら、JLineライブラリを使用して、コンソール上のカーソルを次の番号に置き換えることができます(ただし、それについてはわかりません)。

正確に必要な答えを得るには、もう少し調整が必要な場合があります。

于 2012-05-21T13:41:42.567 に答える
0

論理エラーは言うまでもなく、ここには少なくとも3つの異なる非常に基本的な構文エラーがあります。

  • charは予約語であるため、変数名には使用できません。
  • switch小文字で書かれています(Javaの他のすべてのキーワードと同様)
  • "1"文字列リテラルであり、リテラルではありませんcharcharリテラルには一重引用符を使用します。
于 2012-05-21T13:36:42.320 に答える
0

数値の出力に加えて、印刷したいものを格納する関数と印刷する関数を使用して、新しいクラスを作成できます。

例:

public class DigitalNumbers{

   private String buffer = "";
   private int lines = 5; // Number's height
   private String number0[] = {
      "___ ",
      "|  | ",
      "|  | ",
      "|  | ",
      "¯¯¯ "
   };
   private String number1[] = {
      "  ",
      "| ",
      "| ",
      "| ",
      "  "
   };
   //... 

   public DigitalNumbers(){

   }

   public void add(char c){
      buffer += c;
   }

   public void print(){
      for(int i=0; i<lines; i++){
         for(int j=0; j<buffer.length(); j++){
            switch(buffer.charAt(j)){
               case '0': System.out.print(number0[i]); break;
               case '1': System.out.print(number1[i]); break;
               //...
               default: break;
            }
         }
         System.out.print("\n");         
      }
      buffer = "";
   }

}

そして、次のように使用します。

DigitalNumbers DG = new DigitalNumbers();
for(int i=0;i<3;i++){
   DN.add(arg[i]);
}
DG.print();
于 2012-05-21T14:12:23.803 に答える
0
    //this program help you 

import java.util.*;
public class Test{
   public static void main(String[] args) throws Exception {
           Scanner inr = new Scanner(System.in);
            char c = inr.next().charAt(0); 
           // Add the necessary code in the below space 


  if(c=='2'||c=='3'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9'||c=='0')
   System.out.println(" _ ");
  else
   System.out.println("   ");

  if(c=='4'||c=='5'||c=='6'||c=='8'||c=='9'||c=='0')
   System.out.print("|");
  else
   System.out.print(" ");

  if(c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='8'||c=='9')
   System.out.print("_");
  else
   System.out.print(" ");

  if(c=='1'||c=='2'||c=='3'||c=='4'||c=='7'||c=='0'||c=='8'||c=='9')
    System.out.println("|");
   else
    System.out.println(" ");



  if(c=='6'||c=='2'||c=='8'||c=='0')
   System.out.print("|");
  else
   System.out.print(" ");
  if(c=='2'||c=='3'||c=='5'||c=='6'||c=='8'||c=='9'||c=='0')
   System.out.print("_");
  else
   System.out.print(" ");

  if(c=='1'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9'||c=='0')
   System.out.println("|");
  else
   System.out.println(" ");
   }
}
于 2020-03-25T08:23:33.610 に答える