英文:
How to print math multiplication table returning String value in 2x2 and 3x3 matrix using nested loops in Java
问题
public String simpleMultiplicationTable(int num) {
StringBuilder output = new StringBuilder();
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
output.append(String.format("%4d", i * j));
}
output.append("\n");
}
return output.toString();
}
请注意,我已经根据您提供的内容为您进行了翻译。如果您有任何其他需要翻译的内容或问题,请随时提问。
英文:
I'm trying to get the method that would return the following String for an integer parameter of 2:
Output:
Same for parameter of 3
The code which I got so far is below:
public String simpleMultiplicationTable(int num) {
for(int i = 1 ;i<=num;i++) {
for(int j=1;j<=num;j++) {
System.out.format("%4d",i*j);
}
System.out.println();
}
return String.valueOf(num);
}
答案1
得分: 0
代码部分已翻译如下:
// 使用 StringBuilder 而不是打印每个值,将其附加到 StringBuilder,并在最后返回。
public class Main {
public static void main(String[] args) {
// 测试
System.out.println(simpleMultiplicationTable(2));
System.out.println(simpleMultiplicationTable(3));
}
public static String simpleMultiplicationTable(int num) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
sb.append(i * j);
if (j < num) {
sb.append(" ");
}
}
if (i < num) {
sb.append("\n");
}
}
return sb.toString();
}
}
**输出:**
1 2
2 4
1 2 3
2 4 6
3 6 9
使用 `String` 替代 `StringBuilder`:
====
public class Main {
public static void main(String[] args) {
// 测试
System.out.println(simpleMultiplicationTable(2));
System.out.println(simpleMultiplicationTable(3));
}
public static String simpleMultiplicationTable(int num) {
String table = "";
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
table += j < num ? i * j + " " : i * j;
}
if (i < num) {
table = table + "\n";
}
}
return table;
}
}
JUnit 测试
========
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.jupiter.api.Test;
class TestMethods {
@Test
public void testSimpleMultiplicationTable() {
Table table = new Table();
String result = table.simpleMultiplicationTable(2);
if (result.contains(" \n")) {
fail("你的输出表格在换行字符之前有一个或多个额外的空格。你可以使用 trim() 函数去除额外的空格");
}
assertEquals("1 2\n2 4", result);
result = table.simpleMultiplicationTable(1);
if (result.contains(" \n")) {
fail("你的输出表格在换行字符之前有一个或多个额外的空格。你可以使用 trim() 函数去除额外的空格");
}
assertEquals("1", result);
}
}
class Table {
public String simpleMultiplicationTable(int num) {
String table = "";
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
table += j < num ? i * j + " " : i * j;
}
if (i < num) {
table = table + "\n";
}
}
return table;
}
}
英文:
Instead of printing each value, append it to a StringBuilder
and return the same at the end.
Do it as follows:
public class Main {
public static void main(String[] args) {
// Tests
System.out.println(simpleMultiplicationTable(2));
System.out.println(simpleMultiplicationTable(3));
}
public static String simpleMultiplicationTable(int num) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
sb.append(i * j);
if (j < num) {
sb.append(" ");
}
}
if (i < num) {
sb.append("\n");
}
}
return sb.toString();
}
}
Output:
1 2
2 4
1 2 3
2 4 6
3 6 9
Using String
instead of StringBuilder
:
public class Main {
public static void main(String[] args) {
// Tests
System.out.println(simpleMultiplicationTable(2));
System.out.println(simpleMultiplicationTable(3));
}
public static String simpleMultiplicationTable(int num) {
String table = "";
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
table += j < num ? i * j + " " : i * j;
}
if (i < num) {
table = table + "\n";
}
}
return table;
}
}
JUnit Tests
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.jupiter.api.Test;
class TestMethods {
@Test
public void testSimpleMultiplicationTable() {
Table table = new Table();
String result = table.simpleMultiplicationTable(2);
if (result.contains(" \n")) {
fail("Your output table has one or more extra spaces before the newline character. You can use the trim() function to remove additional spaces");
}
assertEquals("1 2\n2 4", result);
result = table.simpleMultiplicationTable(1);
if (result.contains(" \n")) {
fail("Your output table has one or more extra spaces before the newline character. You can use the trim() function to remove additional spaces");
}
assertEquals("1", result);
}
}
class Table {
public String simpleMultiplicationTable(int num) {
String table = "";
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= num; j++) {
table += j < num ? i * j + " " : i * j;
}
if (i < num) {
table = table + "\n";
}
}
return table;
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论