如何打印多段数字,如7段显示

时间:2012-05-21 13:30:57

标签: java

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

例如:

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是否可以替代它。

修改 更新了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**

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

@Joe:谢谢。

6 个答案:

答案 0 :(得分: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();
    }

答案 1 :(得分:1)

以下是数字时钟的一些示例,它可能对您有所帮助Digital clock

答案 2 :(得分: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;
}

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

可能需要稍微调整一下才能得到所需的答案!

答案 3 :(得分:0)

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

  • char是保留字,因此您不能将其用作变量名。
  • switch是小写的(与Java中的所有其他关键字一样)
  • "1"是一个字符串文字,而不是char字面值。使用char文字的单引号。

答案 4 :(得分: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();

答案 5 :(得分: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(" ");
   }
}