создать таблицу в Java - PullRequest
       2

создать таблицу в Java

0 голосов
/ 16 ноября 2011

Я пытаюсь создать таблицу в Java, принимая пользовательский ввод. Таким образом, для трех таблица должна выглядеть так:

Я ищу любую идею о том, как это сделать - может быть, просто псевдокод будет полезным, я могу заполнить пробелы. Спасибо за вашу помощь :)

Ответы [ 6 ]

4 голосов
/ 16 ноября 2011

Вы можете использовать цикл от 0 до 2 ^ n - 1

for (int i = 0; i < 1 << n; i++) {
    // print i in binary form
    // (print only the last n bits)
}
2 голосов
/ 16 ноября 2011

Вот код Javascript, чтобы делать то, что вы хотите:

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 />");
} 

Вот оно работает: http://jsfiddle.net/uqP3M/

Я не дам вам код Java, так как это, вероятно, домашнее задание ивы должны попытаться понять это при конвертации в Java.Если вы не уверены в операторе <<.Просто знайте, что (1 << x) означает 2 в степени х.Это должно помочь вам понять это.

2 голосов
/ 16 ноября 2011

Попробуйте рекурсию. Метод будет принимать строку и затем выполнять рекурсивный анализ, добавляя 0 или 1, пока не будет найден максимальный размер, после чего он выводит значение и возвращает результат.

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

Я пытался оставить его открытым, поэтому у вас еще есть работа для

0 голосов
/ 04 июня 2015
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));

    }
}
0 голосов
/ 16 ноября 2011
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);
}

Выход:

000
001
010
011
100
101
110
111

0 голосов
/ 16 ноября 2011

Не самый элегантный, но он производит значения, которые вы описываете.Не входная проверка или что-то еще, поэтому есть возможности для улучшения.

  // 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);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...