英文:
How to make a hollow square with words?
问题
以下是翻译好的代码部分:
// JAVA空心矩形的代码
import java.io.*;
import java.awt.*;
import java.util.*;
class BasicAssign1 {
public static void main(String args[])
{
Scanner kb = new Scanner(System.in);
System.out.println("输入字符串:");
String word = kb.nextLine();
char abc[]={};
int a=0;
a=word.length();
for(int i=0; i<=word.length()-1; i++)
{
System.out.print(word.charAt(i));
}
int rows = word.length();
int columns = word.length();
int i;
int j;
for (i = 0; i <= rows; i++)
{
for (j = 0; j <= columns; j++)
{
if (i == 0 || i == rows || j == 0 || j == columns)
{
System.out.print(word.charAt(i));
}
if( i==0 && j==columns){
String word3 = "four";
StringBuilder sb = new StringBuilder(word3);
sb.reverse();
word3 = sb.toString();
System.out.println(word3);
}
else
System.out.print(" ");
}
System.out.println();
}
}
}
注意:我已经翻译了你提供的代码,但是这段代码中存在一些逻辑错误,所以翻译后的代码也可能不会得到预期的输出。如果需要进一步的帮助,请告诉我您希望实现的功能,我会尽力提供指导。
英文:
So I am trying to create a program where I ask the user to input a string and I output a hollow square with the string. So an example would look like if the user input "four":
Output:
fourf
r o
u u
o r
fruof
So far my code is this:
// JAVA code for hollow rectangle
import java.io.*;
import java.awt.*;
import java.util.*;
class BasicAssign1 {
public static void main(String args[])
{
Scanner kb = new Scanner(System.in);
System.out.println("Enter line: ");
String word = kb.nextLine();
char abc[]={};
int a=0;
a=word.length();
for(int i=0; i<=word.length()-1; i++)
{
System.out.print(word.charAt(i));
}
int rows = word.length();
int columns = word.length();
int i;
int j;
for (i = 0; i <=rows; i++)
{
for (j = 0; j <=columns; j++)
{
if (i == 0 || i == rows || j == 0 || j == columns)
{
System.out.print(word.charAt(i));
}
if( i==0 && j==columns){
String word3 = "four";
StringBuilder sb = new StringBuilder(word3);
sb.reverse();
word3 = sb.toString();
System.out.println(word3);
}
else
System.out.print(" ");
}
System.out.println();
}
}
}
Currently this outputs:
fourf f f f fruof
o o
u u
r r
Now I only got 1-2 rows properly done, but the 3rd row which is suppose to be in inverse is printed at the top and also isn't aligned to make a square. Any help would be appreciated thanks!
答案1
得分: 6
以下是翻译好的部分:
你可以通过以下方式简化你的任务:
- 第一行 = 单词 + 单词的第一个字母
- 第二行到倒数第二行 = 单词[length-行数],空格 * (长度-1),单词[行数]
- 最后一行 = 单词的第一个字母 + 单词反向排列
并编写一个实现这个逻辑的函数,例如:
public static void square(String word) {
int len = word.length();
// 第一行:单词 + 单词的第一个字母
System.out.println(word + word.charAt(0));
// 第二行到倒数第二行:单词[length-行数],空格 * (长度-1),单词[行数]
// 创建空白字符串
String blanks = String.join(" ", Collections.nCopies(len - 1, " "));
for (int i = 1; i < len; i++) {
System.out.println(word.charAt(len - i) + blanks + word.charAt(i));
}
// 最后一行:单词的第一个字母 + 单词反向排列
String reversed = new StringBuilder(word).reverse().toString();
System.out.println(word.charAt(0) + reversed);
}
你可以调用这个函数,例如:
square("four");
square("eleven");
这将产生以下输出:
fourf
r o
u u
o r
fruof
elevene
n l
e e
v v
e e
l n
enevele
英文:
You can simplify your task by noting that:
- first row = word + first letter of word
- second to length row = word[length-row], blank * length-1, word[row]
- last row = first letter of word + word backward
and writing a function to implement that e.g.
public static void square(String word) {
int len = word.length();
// first row: word + first letter of word
System.out.println(word + word.charAt(0));
// second to length row: word[length-row], blank * length-1, word[row]
// create a blanks string
String blanks = String.join("", Collections.nCopies(len - 1, " "));
for (int i = 1; i < len; i++) {
System.out.println(word.charAt(len-i) + blanks + word.charAt(i));
}
// last row: first letter of word + word backward
String reversed = new StringBuilder(word).reverse().toString();
System.out.println(word.charAt(0) + reversed);
}
You can call this e.g.
square("four");
square("eleven");
Which will give the following output:
fourf
r o
u u
o r
fruof
elevene
n l
e e
v v
e e
l n
enevele
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论