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

我无法让我的程序输出在Java中正确对齐

牧业
2023-03-14

这些是说明。。。编写一个计算行星测量值的类。

>

  • 用这些方法写一个类。

    • 初始化行星周长为英里或公里的构造函数
    • 计算行星测量值的方法-圆,面积,直径,半径,表面,面积,体积

    使用你的类编写一个程序,要求用户输入行星的周长,创建一个行星对象,用逗号和小数打印行星的测量值,确保小数对齐。

    package com.company;
    import java.util.Scanner;
    import java.lang.reflect.Field;
    
    public class Main {
    
        public static void main(String[] args) {
            Main planet = new Main();
            Scanner in = new Scanner(System.in);
            classP cP = new classP();
    
    
            //cP.getRadius();
            //cP.getCirleArea();
            //cP.getcirc();
    
        }
    }
    
    package com.company;
    import java.util.Scanner;
    import java.lang.Math;
    import java.text.DecimalFormat;
    
    public class classP {
        private double circ, radius, circleArea, surfArea, volume;
        //public classP radius;
        //public double circ;
        //public double circleArea;
    
        public Main planet = new Main();
    
        public classP() {
            this.circ = circ;
            this.radius = radius;
            this.circleArea = circleArea;
            this.surfArea = surfArea;
            this.volume = volume;
    
            Main mainClass = new Main();
            Scanner in = new Scanner(System.in);
            DecimalFormat df = new DecimalFormat("###,###,###.##");
    
            System.out.print("What is the planet's circumference in miles?  ");
            double circ = in.nextDouble();
            double radius = circ / (Math.PI * 2);
            double circleArea = Math.PI * Math.pow(radius, 2);
            System.out.printf("%nThe radius of the planet is: " + "%,12.1f\n" , radius);
            System.out.printf("%nThe area of the planet is: " + "%,12.1f\n", circleArea);
            double diameter = circ / Math.PI;
            System.out.printf("%nThe diameter of the planet is: " + "%,12.1f\n", diameter);
            double surfArea = 4 * Math.PI * Math.pow(radius, 2);
            System.out.printf("%nThe surface area of the planet is: " + "%,12.1f\n", surfArea);
            double volume = (4.0 / 3) * Math.PI * Math.pow(radius, 3);
            System.out.printf("%nThe volume of the planet is: " + "%,12.1f\n", volume);
        }
    
    
        //public final double getcirc(){
        //    return this.circ;
        //}
        //public final classP getRadius(){
        //    return this.radius;
        //}
        //public final double getCirleArea() {
        //    return this.circleArea;
        //}
    }
    

    这是我的输出,示例用户输入为:100

    What is the planet's circumference in miles?  100
    
    The radius of the planet is:         15.9
    
    The radius of the planet is: 15.9        
    
    The area of the planet is:        795.8
    
    The area of the planet is: 795.8       
    
    The diameter of the planet is: 31.8                          
    
    The surface area of the planet is: 3,183.1                       
    
    The volume of the planet is: 16,886.9 
    
  • 共有2个答案

    唐彬炳
    2023-03-14

    您需要创建一个格式字符串,可以将标签传递到该字符串,该字符串指定一个足够大的填充空间,以容纳最长的填充空间。

    package com.company;
    import java.util.Scanner;
    import java.lang.Math;
    import java.text.DecimalFormat;
    
    class classP {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("What is the planet's circumference in miles?  ");
    
            double circ = in.nextDouble();
            double radius = circ / (Math.PI * 2);
            double circleArea = Math.PI * Math.pow(radius, 2);
    
            System.out.println();
    
            String format = "%35s %,12.1f\n";
    
            System.out.printf(format, "The radius of the planet is" , radius);
            System.out.printf(format, "The area of the planet is", circleArea);
            double diameter = circ / Math.PI;
            System.out.printf(format, "The diameter of the planet is", diameter);
            double surfArea = 4 * Math.PI * Math.pow(radius, 2);
            System.out.printf(format, "The surface area of the planet is", surfArea);
            double volume = (4.0 / 3) * Math.PI * Math.pow(radius, 3);
            System.out.printf(format, "The volume of the planet is", volume);
        }
    }
    

    结果:

    What is the planet's circumference in miles?  100
    
            The radius of the planet is         15.9
              The area of the planet is        795.8
          The diameter of the planet is         31.8
      The surface area of the planet is      3,183.1
            The volume of the planet is     16,886.9
    
    谭坚诚
    2023-03-14

    需要对代码进行一些基本的改进。代码块中存在太多不必要的代码。我试着组织他们。它可能会指引你。

    对于类似的打印,使用String.format创建具有打印机功能的自定义模板。它实际上很容易维护。

    代码:

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Main planet = new Main();
            Scanner in = new Scanner(System.in);
            
            System.out.print("What is the planet's circumference in miles?  ");
            double circ = in.nextDouble();
            
            ClassP cP = new ClassP(circ);
            cP.calculateData();
            cP.print();
    
        }
    
    }
    
    class ClassP{
        
        private double circ, radius, circleArea, diameter, surfArea, volume;
    
        public ClassP(double circ) {
            this.circ = circ;  
        }
        
        public void calculateData() {
            radius = circ / (Math.PI * 2);
            circleArea = Math.PI * Math.pow(radius, 2);
            diameter = circ / Math.PI;
            surfArea = 4 * Math.PI * Math.pow(radius, 2);
            volume = (4.0 / 3) * Math.PI * Math.pow(radius, 3);
            
        }
        
        public void print() {
            customAlignPrinter("The radius of the planet is:", radius);
            customAlignPrinter("The area of the planet is:", circleArea);
            customAlignPrinter("The diameter of the planet is:",diameter);
            customAlignPrinter("The surface area of the planet is:", surfArea);
            customAlignPrinter("The volume of the planet is:", volume);
        }
        
        public void customAlignPrinter(String msg,double val) {
            System.out.println(String.format("%40s %,20f", msg, val));
        }
        
    }
    

    输出控制台:

    What is the planet's circumference in miles?  100
                The radius of the planet is:            15.915494
                  The area of the planet is:           795.774715
              The diameter of the planet is:            31.830989
          The surface area of the planet is:         3,183.098862
                The volume of the planet is:        16,886.863940
    
     类似资料:
    • 嗨,伙计们,我的作业真的需要帮助。我试着做它,但是我不能解决它。 起始板: 期望结果: 然而,每次执行时,每当有赢家时,我总是得到以下信息: 最后,如何计算获胜次数最多的玩家的胜率? 限制: > < li> 您必须对井字游戏棋盘使用2D阵列。(我知道我没有使用2D数组,因为我不知道如何让编译器接受来自2D数组的1-9个输入。) 不能对此问题使用类。 如果愿意,可以使用静态方法。

    • 我试图做一个java程序,但我有一个问题与输出。

    • 问题内容: 由于某种原因,当我添加到优先级队列时,它不能完全按字母顺序对字符串进行排序,也无法理解原因。 这是添加到PriorityBlockingQueue的代码: 但是我没有得到完全排序的输出(只有前几行,但是您可以看到它没有排序): 这是预期输出文件中排序输出的实数(第一部分): 问题答案: 我怀疑您正在尝试迭代并打印元素。 请注意,优先级队列数据结构(AKA heap)不能保证排序- 它保

    • 问题内容: 我想确保我对UTF-8的了解都是正确的。我已经尝试使用UTF-8一段时间了,但是我不断遇到越来越多的错误和其他怪异的东西,使得拥有100%UTF-8网站似乎几乎是不可能的。我似乎总是想念某个地方。也许有人可以改正我的清单或确定清单,所以我不会错过任何重要事项。 数据库 每个站点都必须将数据存储在某个地方。无论您使用什么PHP设置,都必须配置数据库。如果无法访问配置文件,请确保在连接后立

    • 我正在做一个关于模拟正在处理的CPU工作的项目。基本上,用户将输入一个工作,该工作的长度将被处理,优先级键(从-20到19,从-20开始以获得更高的优先级)。到目前为止,我已经让所有这些工作,除了程序正确终止。基本上,当我的优先级队列中的所有作业都被处理完时,我需要程序终止。当每个作业被处理时,它将从长度中减去,直到它为0。当它为0时,它将从优先级队列中移除。当没有剩余的作业(优先级队列是空的)时

    • 我已经回顾了其他几个类似的问题,但我读到的那些问题并没有帮助解决我的问题。我的目标是基于int用户输入打印菜单值,并继续提供选择,直到用户点击6退出。这是我的代码(我是Java新手)。