我偶然发现了一个让我重现这个的练习(这是预期的输出):
11111
3456789012109876543
这是一个回文(在底部),其中数字高于9(两位数)必须垂直写入。这听起来很复杂,我需要一些帮助。
这就是我到目前为止所做的,回文:
class Print {
public static void main(String[] args) {
System.out.println("Insert a number from 1 to 100: ");
int input = Read.anInt();
System.out.println("Insert another number from 1 to 100: ");
int output = Read.anInt();
int a = input;
for (int i = a; i < output; i++){
System.out.print(a);
a++;
}
a = input -1;
for (int j = output; j > a; j--){
System.out.print(output);
output--;
}
}
}
您可以通过解释如何确保垂直写入高于9的数字来帮助我吗?
AdamRice:我的意思是:
3456789111119876543
01210
但到目前为止我设法做的就是这个烂摊子:
456789101
0
111
1
121110987654
这可能是因为我完全无视数组。
答案 0 :(得分:1)
道歉有点慢。在最终了解问题之后,我想我有一个解决方案。
import java.util.Scanner;
public class VerticalText {
public static void main(String[] args) {
Scanner Read = new Scanner(System.in);
System.out.println("Insert a number from 1 to 100: ");
int start = Read.nextInt();
System.out.println("Insert another number from 1 to 100: ");
int end = Read.nextInt();
String numbers = "";
for(int i = start; i <= end; i++)
{
if(i < 10)
{
numbers += String.format("%02d", i);
}
else
{
numbers += i;
}
}
for(int i = (end-1); i >= start; i--)
{
if(i < 10)
{
numbers += String.format("%02d", i);
}
else
{
numbers += i;
}
}
String row1 = "";
String row2 = "";
char[] chars = numbers.toCharArray();
for(int i = 0; i < chars.length; i++)
{
if(chars[i] == '0')
{
chars[i] = ' ';
}
row1 += chars[i];
i++;
row2 += chars[i];
}
System.out.println(row1);
System.out.println(row2);
}
}
对于输入5和15,它产生以下输出:
11111111111
567890123454321098765
<强>解释强> 我构建了一串数字,如果它小于10格式,则前导为0.这个额外的0只是一个占位符。在打印方面,我们可以打印空格而不是零。