2

我只是想知道是否可以以数字格式显示数字。在此我们接受来自控制台的号码。

例如:

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

我尝试使用 switch case 但没有得到合适的方法

"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.lang.

编辑 Joe 建议的更新代码。有用。

        /**
        * @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 - 为每个号码设置初始数据。您可以将其作为二维数组执行(维度 1:数字,维度 2:行)例如:

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

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

2 - 对于组成字符的每一行,扫描输入中的每个数字并写下适当的字符串。这将逐行建立字符。

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 有一个二维数组。价值观可以去{{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;
}

打印一个数字后,您可以使用JLine库替换控制台上的光标以从下一个数字重新开始。(虽然我不确定)。

它可能需要更多的调整才能成为所需的答案!

于 2012-05-21T13:41:42.567 回答
0

这里至少有 3 个不同的、非常基本的语法错误,更不用说任何逻辑错误了。

  • char是保留字,因此不能将其用作变量名。
  • switch写成小写(就像 Java 中的所有其他关键字一样)
  • "1"是字符串文字,而不是char文字。char对文字使用单引号。
于 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 回答