gpt4 book ai didi

java - 尝试将用户输入的短语打印成 V 形

转载 作者:行者123 更新时间:2023-12-02 13:27:19 30 4
gpt4 key购买 nike

我做了一些安静的搜索,发现了很多将星星和其他形状输出到无数图案中的方法,但我还没有找到任何关于如何使用用户生成的短语来做到这一点的信息。

因此,为了澄清我的问题,我希望能够获取用户输入,我们可以将其称为 String userInput,并使其以“V”形状打印 userInput。

我想我需要创建一个循环。但我对如何让它在正确的位置打印各个字符感到困惑。以下是我到目前为止所得到的以及我当前得到的输出。

    public class VShape {
public static void main(String[] args) {
String userInput = JOptionPane.showInputDialog("Please enter a phrase: ");

int length = userInput.length();

System.out.println("Phrase: "+ userInput);


if ((length%2)==0)
{
System.out.println("The length of the phrase is: EVEN");
}
else
{
System.out.println("The length of the phrase is: ODD");
}

for (int i =0; i<length; i++ )
{
System.out.println(userInput);
}

}


run:
Phrase: 123456
The length of the phrase is: EVEN
123456
123456
123456
123456
123456
123456
BUILD SUCCESSFUL (total time: 5 seconds)

非常感谢任何帮助。

  • 这被标记为与有关菱形图案的问题重复。如何打印菱形图案的问题是打印空格和*。我想弄清楚的是如何使用一个短语。例如“房子是蓝色的”并打印成“V”形。我在试图弄清楚一旦循环满足所有条件后要实际执行什么操作时,我遇到了最大的麻烦。例如,我如何告诉它在正确的位置打印第一个字符“T”,然后打印下一个字符“H”?

也许这更清楚一点。

最佳答案

编辑:问题是关于 Java 的。我的答案是用 C# 编写的。这是 Java 版本:

public static void main(String []args){
String input = "1234567";
char[] inputArray = input.toCharArray();

String [] lines = new String[input.length() / 2 + 1];
int i, k;

for(i = 0; i<input.length() /2 ;i++) {

// Take the i-th char from the beginning
char begChar = inputArray[i];
char endChar = inputArray[input.length() - i - 1];

// calculate numbers of spaces:
int spacesBefore = i;
int spacesAfter = i;
int spacesInBetween = input.length() - 2 - 2*i;

// Create the string
String line = "";
for(k = 0; k < spacesBefore; k++) { line += " "; }
line += begChar;
for(k = 0; k < spacesInBetween; k++) { line += " "; }
line += endChar;

lines[i] = line;
}

// In the end, if the length is odd, create the last line for the last char
if(input.length() % 2 != 0) {
String lastLine = "";
for (k= 0;k<input.length() /2; k++) {
lastLine+=" ";
}
lastLine += inputArray[input.length() /2];
lines[input.length() / 2] = lastLine;
}

// output
for(i=0;i<lines.length && lines[i] != null; i++) {
System.out.println(lines[i]);
}

}

C# 中的旧答案如下:

public static void VOutput(string input)
{
var inputArray = input.ToCharArray();

string [] lines = new string[input.Length / 2 + 1];

for(var i = 0; i<input.Length /2 ;i++) {

// Take the i-th char from the beginning
var begChar = inputArray[i];
var endChar = inputArray[input.Length - i - 1];

// calculate numbers of spaces:
var spacesBefore = i;
var spacesAfter = i;
var spacesInBetween = input.Length - 2 - 2*i;

// Create the string
string line = String.Empty;
for(var k = 0; k < spacesBefore; k++) { line += " "; }
line += begChar;
for(var k = 0; k < spacesInBetween; k++) { line += " "; }
line += endChar;

lines[i] = line;
}

// In the end, if the length is odd, create the last line for the last char
if(input.Length % 2 != 0) {
var lastLine = String.Empty;
for (var k= 0;k<input.Length/2; k++) {
lastLine+=" ";
}
lastLine += inputArray[input.Length /2];
lines[input.Length / 2] = lastLine;
}

// output
foreach(var line in lines) {
Console.WriteLine(line);
}
}

个人评论:虽然我确实同意代码不是所要求的语言,但实际上花了 6 分钟将其切换到 Java,包括复杂的更改,例如将“ToCharArray()”更改为“toCharArray()”以及相似的。我认为你们中的一些人本可以做出尝试而不是给出负面分数。谢谢。

关于java - 尝试将用户输入的短语打印成 V 形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43336483/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com