用java生成表

用java生成表,java,string,Java,String,我试图通过接受用户输入来用java创建表。因此,对于这三种情况,表应该如下所示: 我正在寻找任何关于如何着手做这件事的想法-可能只是伪代码会有帮助,我可以填补空白。谢谢您的帮助:)尝试递归。 该方法将接受一个字符串,然后递归,添加一个0或1,直到找到一个最大大小,此时它打印出值并返回 method(string a, int max) { if (stopping condition reached?) { print(a); } else { recurse

我试图通过接受用户输入来用java创建表。因此,对于这三种情况,表应该如下所示:

我正在寻找任何关于如何着手做这件事的想法-可能只是伪代码会有帮助,我可以填补空白。谢谢您的帮助:)

尝试递归。 该方法将接受一个字符串,然后递归,添加一个0或1,直到找到一个最大大小,此时它打印出值并返回

method(string a, int max)
{
  if (stopping condition reached?)
  {
    print(a);
  }
  else
  {
    recurse with 0 + a
    recurse with 1 + a
  }
}

我已经试着让它保持打开状态,因此您仍有工作要做

var input = 3; // Read 3 from user
var lines = 1 << input;
var i, j;

for(i = 0; i < lines; i++){
    var str = "";
    for(j = input - 1; j >= 0; j--){
        if(i & 1 << j)
             str += "1";
        else
             str += "0";
    }
    document.write(str + "<br />");
} 
var输入=3;//从用户处读取3
变量线=1=0;j——){

如果(i&1您可以使用从0到2^n-1的循环

for (int i = 0; i < 1 << n; i++) {
    // print i in binary form
    // (print only the last n bits)
}

for(int i=0;i<1不是最优雅的,但它会生成您描述的值。不是输入验证或任何东西,因此有改进的余地

  // This should be set as input, hardcoding for example
  int lines = 3;

  char[] fill = new char[lines];
  Arrays.fill(fill, '0');

  String resultTemplate = new String(fill);
  int maxNum = (int) Math.pow(2, lines);

  for(int index = 0; index < maxNum;index++)
  {
     String binaryString = Integer.toBinaryString(index);
     System.out.println(resultTemplate.substring(0,lines-binaryString.length()) + binaryString);
  }
//这应该设置为输入,例如硬编码
整数行=3;
字符[]填充=新字符[行];
数组。fill(fill,'0');
String resultTemplate=新字符串(填充);
intmaxnum=(int)Math.pow(2行);
对于(int index=0;index
int n=3,长度;
字符串前面=”;
对于(inti=0;i<10)front=new字符串(new char[length])。替换(“\0”,“0”);
系统输出打印项次(前+箱);
}
输出:

000
001
010
011
100
101
110
111

包javaa;
导入java.util.Scanner;
公共类可复用{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int n=0,x=0;
做
{
扫描仪sc=新的扫描仪(System.in);
System.out.println(“起始范围:”);
x=sc.nextInt();
System.out.println(“输入结束范围:”);
n=sc.nextInt();

对于(int i=x;i),问题是我不知道何时添加零或一。就像我脑子里有递归部分,但我不知道如何设置递归。请记住,“添加”可能意味着“开始插入”如果示例中所述的顺序是必需的。递归在这里完全是多余的。您需要同时执行这两项操作,一次执行一项。第一个递归调用将分支出,直到尝试该分支上的所有值,然后您回到函数,第二个递归调用将分支出,直到该分支上的所有值都被执行。@Oli His教授可能正试图让他通过这个例子来学习它。如果你在理解它时有任何困难,请告诉我。更优雅、更符合imo标准的解决方案是使用
printf()
以及获得零填充的正确格式选项。也许也可以去掉math.pow,但可能这对我来说更明显。如果输入范围,将获得乘法表的输出
int n=3,length;
String front="";
for (int i = 0; i < 1 << n; i++) {
    front="";
    String bin= Integer.toBinaryString(i);
    if((length=n-bin.length())>0) front=new String(new char[length]).replace("\0", "0");
    System.out.println(front+bin);
}
package javaa;

import java.util.Scanner;

public class MulTable {


    public static void main(String[] args) {
        // TODO Auto-generated method stub


        int n = 0,x = 0;
        do
        {
            Scanner sc = new Scanner(System.in);

            System.out.println("start range:");
            x = sc.nextInt();
            System.out.println("enter the end  range:");
            n = sc.nextInt();

            for(int i = x; i <= n; i++)
            {

                for(int j = 1; j <= 10; j++)
                {
                    System.out.println(i + "*" + j + "=" + (i*j));
                }
            }
        }
        while((n!=9)||(x!=9));

    }
}