我必须使用循环在Java中创建一个表。它需要在一列中打印1-78,然后每五次打印15-75次(例如15,20,55,... 75)78次(因为循环需要打印出总共78个值;所以循环需要在第二列中迭代6次,然后每三次打印15-30次(例如15,18,21,24,... 30)78次(因为循环需要打印出总共78次)值;因此循环需要迭代13次),在第三列中,然后是第四列中的数字4。 这就是我到目前为止所做的:
import java.util.Scanner;
public class Sandbox {
public static void main(String[] args) { //main method
int angles = 10;
double cosines =4;
int meters =12;
for (int i =1; i<=78;i++){
System.out.println(i);
}
for (int j = 1; j <=6; j++) {
for (angles =10 ;angles<75;) {
angles +=5;
for (meters=12; meters <30;) {
meters +=3;
int num1= 4;
System.out.print( ")" +angles + "|"+ meters) +4);
}
}
}
这会输出正确的值,但打印方式应为1-78然后米= 30然后是15-75的值78次。
答案 0 :(得分:1)
我觉得这样做你想要的:
public static void main(String[] args) { //main method
int angles = 15;
double cosines =4;
int meters =15;
for (int i =1; i<=78;i++){
System.out.print(i);
System.out.print('|');
System.out.print(angles);
angles+=5;
if (angles>75){
angles=15;
}
System.out.print('|');
System.out.print(meters);
meters+=3;
if (meters>30){
meters=15;
}
System.out.println("|4|");
}
}
你对所有循环次数感到困惑,你需要生成78行,你需要循环78次,完全停止。然后为每个循环打印变量,根据需要递增和重置它们,然后循环。
答案 1 :(得分:1)
一种可能的解决方案是首先在78 x 4(或4 x 78)阵列中构建整个输出,然后将它们全部打印在两个嵌套循环中。如果这对你来说更容易或感觉更自然。这样您就可以重用原始程序中的想法和大部分代码。
public static void main(String[] args) {
int[][] table = new int[4][78];
// generate table
int angles = 10;
double cosines = 4;
int meters = 12;
int line = 0;
for (int i = 1; i <= 78; i++) {
table[0][line] = i;
line++;
}
line = 0;
for (int j = 1; j <= 6; j++)
for (angles = 10; angles < 75;) {
angles += 5;
table[1][line] = angles;
line++;
}
line = 0;
for (int j = 1; j <= 13; j++)
for (meters = 12; meters < 30;) {
meters += 3;
table[2][line] = meters;
table[3][line] = 4;
line++;
}
// print table
for (line = 0; line < 78; line++) {
System.out.print(table[0][line]);
for (int column = 1; column < 4; column++) {
System.out.print("|" + table[column][line]);
}
System.out.println();
}
}
答案 2 :(得分:1)
你需要的是在整个循环中构建输入,假设你想要一个像
这样的表1 | 15 20 25 30 ... 75 | 15 18 21 ... 30 | 4
2 | 15 20 25 30 ... 75 | 15 18 21 ... 30 | 4
....
为了构建它,你需要嵌套循环和输出。只要你简化循环就可以很简单。
for (int i = 1; i <= 78; i++)
{
System.out.print(i + " | ");
for (int j = 15; j <=75; j += 5)
System.out.print(j + " ");
System.out.print("| ");
for (int k = 15; k <= 30; k += 3)
System.out.print(k + " ");
System.out.print("| 4 |");
System.out.println("");
}
正如Kira Yakuza在comments中提到的那样,你最好把它分成方法。
请注意,您的问题在示例输出上有些不清楚,这就是我解释您所写内容的方式。如果您需要不同的输出,则应编辑您的问题以澄清。
答案 3 :(得分:1)
您可以计算给定数据类型的索引,最大值,因子和偏移量的值。使用此信息,无论您处于哪个索引,都可以生成每一行。
public class TablePrinter {
public static interface RowPrinter {
String print(int rowIndex, int dataIndex, Object[][] data);
}
public static void main(String[] args) {
// { label, max, factor, offset }
Object[][] data = {
{ "angles", 75, 5, 10 },
{ "meters", 30, 3, 12 }
};
printTable(data, new RowPrinter() {
@Override
public String print(int rowIndex, int dataIndex, Object[][] data) {
int max = (int) data[dataIndex][1];
int factor = (int) data[dataIndex][2];
int offset = (int) data[dataIndex][3];
return String.format(" | %8d", calculate(rowIndex, max, factor, offset));
}
});
}
public static void printTable(Object[][] data, RowPrinter rowPrinter) {
// Print headers
System.out.printf("%8s", "index");
for (int i = 0; i < data.length; i++) {
System.out.printf(" | %8s", data[i][0]);
}
System.out.println();
// Print data rows
for (int i = 0; i < 75; i++) {
System.out.printf("%8d", i + 1);
for (int j = 0; j < data.length; j++) {
System.out.printf(rowPrinter.print(i, j, data));
}
System.out.println();
}
}
public static int calculate(int index, int max, int factor, int offset) {
return ((index * factor) % (max - offset + factor)) + offset;
}
}
index | angles | meters
1 | 10 | 12
2 | 15 | 15
3 | 20 | 18
4 | 25 | 21
5 | 30 | 24
6 | 35 | 27
7 | 40 | 30
8 | 45 | 12
9 | 50 | 15
10 | 55 | 18
11 | 60 | 21
12 | 65 | 24
13 | 70 | 27
14 | 75 | 30
15 | 10 | 12
16 | 15 | 15
17 | 20 | 18
18 | 25 | 21
19 | 30 | 24
20 | 35 | 27
21 | 40 | 30
22 | 45 | 12
23 | 50 | 15
24 | 55 | 18
25 | 60 | 21
26 | 65 | 24
27 | 70 | 27
28 | 75 | 30
29 | 10 | 12
30 | 15 | 15
31 | 20 | 18
32 | 25 | 21
33 | 30 | 24
34 | 35 | 27
35 | 40 | 30
36 | 45 | 12
37 | 50 | 15
38 | 55 | 18
39 | 60 | 21
40 | 65 | 24
41 | 70 | 27
42 | 75 | 30
43 | 10 | 12
44 | 15 | 15
45 | 20 | 18
46 | 25 | 21
47 | 30 | 24
48 | 35 | 27
49 | 40 | 30
50 | 45 | 12
51 | 50 | 15
52 | 55 | 18
53 | 60 | 21
54 | 65 | 24
55 | 70 | 27
56 | 75 | 30
57 | 10 | 12
58 | 15 | 15
59 | 20 | 18
60 | 25 | 21
61 | 30 | 24
62 | 35 | 27
63 | 40 | 30
64 | 45 | 12
65 | 50 | 15
66 | 55 | 18
67 | 60 | 21
68 | 65 | 24
69 | 70 | 27
70 | 75 | 30
71 | 10 | 12
72 | 15 | 15
73 | 20 | 18
74 | 25 | 21
75 | 30 | 24