我只是想知道是否可以以数字格式显示数字。 在这里我们接受来自控制台的号码。
例如:
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:谢谢。
答案 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(" ");
}
}