当前位置: 首页 > 知识库问答 >
问题:

java格式(俄罗斯农民乘法)

燕刚捷
2023-03-14

我想用这个方案来格式化俄罗斯农民乘法:问题是它不能处理更大的数字。

47 * 42
-------
23   84
11  168
 5  336
 2  672
 1 1344
=======
   1974

但当我的数字较大时,我的格式不匹配:

470 * 420
---------
235  840
117 1680
58 3360
29 6720
14 13440
 7 26880
 3 53760
 1 107520
=========
   197400

它应该是这样的:

470 * 420
----------
235    840
117   1680
 58   3360
 29   6720
 14  13440
  7  26880
  3  53760
  1 107520
==========
   197400

他们是一种为变量设置格式的方法吗?我目前已经用-和M硬编码了它?

这是我当前的代码:

public class Main {

public static void main (String[] args) {
    int num1=47;
    int num2=42;
    int product=0;
    String testNum1 = "";
    String testNum2 = "";


    if(num1%2!=0)
        product=product+num2;

    System.out.println(num1 + " * "+num2);
    int printLength = String.valueOf(num1).length() + String.valueOf(num2).length() + 3;
    for (int i = 0; i < printLength; i++){
        System.out.print('-');
    }
    System.out.println();
    while(num1!=1)
    {
        num1=num1/2;
        num2=num2*2;

        int x = String.valueOf(num1).length();

        if(num1%2!=0)
            product=product+num2;

        testNum1 = String.format("%2d", num1);
        testNum2 = String.format("%4d", num2);
        System.out.println(testNum1 + " " + testNum2);
    }
    for (int i = 0; i<printLength; i++){
        System.out.print("=");
    }
    System.out.println();
    System.out.print("   ");
    System.out.print(product);
}

}

共有1个答案

胡鸿远
2023-03-14

-M硬编码导致故障。有多种方法可以实现此模式。下面,你可以找到懒惰的人:P。

另外,你需要照顾-----

 //changes
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
int maxLength1 =0;
int maxLength2 =0;

while(num1!=1)
{
    num1=num1/2;
    num2=num2*2;

    int x = String.valueOf(num1).length();

    if(num1%2!=0)
        product=product+num2;


    String s1 = ""+num1;
    String s2 = ""+num2;
    list1.add(s1);
    list2.add(s2);
    maxLength1 = maxLength1>s1.length()?maxLength1:s1.length();  //getting the max length for both numbers
    maxLength2 = maxLength2>s2.length()?maxLength2:s2.length();

}


//main printing lines
for (int i = 0; i < list1.size(); i++) {

    //calculating and adding required spaces for both numbers.
    
    int firstSpace = maxLength1 - list1.get(i).length() ;
    String space1 = new String(new char[firstSpace]).replace('\0', ' ');
    
    int secondSpace = maxLength2 - list2.get(i).length() ;
    String space2 = new String(new char[secondSpace]).replace('\0', ' ');

    System.out.println(space1+list1.get(i)+" "+space2+list2.get(i));
}

//changed here for better visual representaion 
for (int i = 0; i<=(maxLength1+maxLength2) ; i++){
    System.out.print("=");
}
System.out.println();
System.out.print("   ");
System.out.print(product);

在线演示

 类似资料:
  • 本章实现一个俄罗斯方块游戏。 简介 俄罗斯方块游戏是有史以来最受欢迎的电脑游戏之一。最初的游戏是由俄罗斯程序员 Alexey Pajitnov 在1985年设计并编写的。从那时起,《俄罗斯方块》便以多种形式出现在几乎所有平台上。 俄罗斯方块被称为掉落方块拼图游戏。在这款游戏中,我们有7种不同的形状,叫做砖块(tetrminoes):S形、Z形、T形、L形、线形、反向L形和方形。每个形状都是由四个正

  • 本章我们要制作一个俄罗斯方块游戏。 Tetris 译注:称呼:方块是由四个小方格组成的 俄罗斯方块游戏是世界上最流行的游戏之一。是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这个游戏就风靡了各个游戏平台。 俄罗斯方块归类为下落块迷宫游戏。游戏有7个基本形状:S、Z、T、L、反向L、直线、方块,每个形状都由4个方块组成,方块最终都会落到屏幕底部。所以玩家通过控制

  • 趣味俄罗斯方块 功能结构图 业务流程图 游戏欢迎界面 代码实现 #include <stdio.h> #include <time.h> #include <windows.h> #include <conio.h> /*******宏 定 义*******/ #define FrameX 13 //游戏窗口左上角的X轴坐标 #define FrameY 3

  • 本章我们要制作一个俄罗斯方块游戏。 Tetris 译注:称呼:方块是由四个小方格组成的 俄罗斯方块游戏是世界上最流行的游戏之一。是由一名叫 Alexey Pajitnov 的俄罗斯程序员在 1985 年制作的,从那时起,这个游戏就风靡了各个游戏平台。 俄罗斯方块归类为下落块迷宫游戏。游戏有 7 个基本形状:S、Z、T、L、反向 L、直线、方块,每个形状都由 4 个方块组成,方块最终都会落到屏幕底部

  • 利用cocos2d-x实现俄罗斯方块游戏的简单功能。其中只实现了一种方块,有兴趣的话可以自己添加一些块。只能在Retina硬件模式下才能正常显示。 作者说:如果有好的建议亲记得联系我632272261@qq.com。 [Code4App.com]

  • 是否有可能在Java中创建一个加载(或更恰当地重新加载)自己的类加载器? 它最初可以由默认的类加载器加载。我想象一个Java系统能够在运行时通过编译和加载循环进行自我修改。如果是这样,您可以创建许多从您的俄罗斯玩偶加载器继承的对象,以动态更新其逻辑。