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

尝试打印方法时出现字符串格式错误

彭宜人
2023-03-14

无法打印出格式错误弹出的结果。

  1. 尝试在没有getWaitingTime()和%-20d(最后一个)的情况下执行,它可以工作。
  2. 尝试执行1,并用getWaitingTime()替换seqNo,它可以工作。

不确定是什么错误。

import java.util.*;
public class Customer {

  private int seqNo;
  private Calendar arrTime;
  private Calendar serveTime;
  private int counter;

  public Customer(int seqNo) {
    this.seqNo = seqNo;
    this.arrTime = new GregorianCalendar();
  }

  public int getSeqNo() {
    return seqNo;
  }

  public int getCounter() {
    return counter;
  }

  public void setServeTime(Calendar serveTime) {
    this.serveTime = serveTime;
  }

  public void setCounter(int counter) {
    this.counter = counter;
  }

  public static String getTime(Calendar time) {
    return String.format("%02d:%02d:%02d", time.get(Calendar.HOUR_OF_DAY),
            time.get(Calendar.MINUTE), time.get(Calendar.SECOND));
  }

  public int getWaitingTime() {
    return (int) ((serveTime.getTimeInMillis() - arrTime.getTimeInMillis()) / 1000);
  }

  public String toString() {
    return String.format("%-12d %-23s %-27s %-20s %-12d",
            seqNo, getTime(arrTime), getTime(serveTime), "Counter " + counter + getWaitingTime());
  }

}

它调用toString方法的部分。它从servicelist被称为。

private ArrayList<Customer> serviceList = new ArrayList<Customer>();

private void jbtReportActionPerformed(java.awt.event.ActionEvent evt) {                                          
        JTextArea jtaReport = new JTextArea(50, 200);
        String str = String.format("%70s\n", "Service Analysis Report");
        str += String.format("%-5s %-10s %-20s %-20s %-15s %-15s\n",
                "No", "Seq. No", "Arr. Time (ms)", "Serve Time(ms)", "Counter", "Waiting Time(s)");
        
        for(int i=0; i<serviceList.size(); i++){
            int no = i+1;
            str += String.format("%-9s %80s\n", no, serviceList.get(i).toString());
        }
        
        Font reportFont = new Font("Arial", Font.BOLD, 14);
        jtaReport.setText(str);
        jtaReport.setEditable(false);
        jtaReport.setFont(reportFont);
        JFrame reportFrame = new JFrame();
        reportFrame.add(jtaReport);
        reportFrame.setSize(600, 800);
        reportFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        reportFrame.setVisible(true);
    }

至于错误是:

JAVAutil。MissingFormatArgumentException:邮局的格式说明符'-12d'。顾客toString(Customer.java:49)

这是返回字符串格式(“%-12d,…”)在顾客那里。因为它可以在没有最后一个%-12d的情况下运行,所以我认为问题在于最后一个%-12d。

共有1个答案

韩弘方
2023-03-14

将Tostring()处的“”替换为“,”

public String toString() {
    return String.format("%-12d %-23s %-27s %-20s %-12d",
            seqNo, getTime(arrTime), getTime(serveTime), "Counter " + counter, getWaitingTime());
  }
 类似资料:
  • 我是Java新手,在赋值时遇到了一些麻烦。我需要创建一个方法来检查一个双倍的值,如果它大于700美元,那么15%的折扣将应用于CourseFeesInCAD变量,并将布尔值设置为true。否则没有折扣,布尔值将设置为(或保持)为false。我对下面代码的问题(除了缺乏经验)是它给出了一个非法字符:\u0000错误。 我相信\u0000是空字符,但我没有任何字符类型变量。它似乎与行 当我注释掉该行时

  • 通常我不会在这里发布语法错误,但这个案例对我来说有点可疑。我试图用一个字符串组合一个常数。我在本地主机上工作正常,但当我在web服务器上推送项目时,它会告诉我: 代码: 和 这与不同的PHP版本有关吗?(5.5在网络服务器,7.0localhost) 最新消息 代码中的一些更新:

  • 所以我在做一个定时器包装函数,但是我在尝试打印参数的时候不断地得到错误。 我的计时器功能看起来是这样的: 理想的情况下,它也会打印kwargs,但显然这是一个完全不同的问题,尽管我会非常感谢如果有人帮助我做这件事。所以当没有一个论点的时候,我的结果很好: 给出:使用参数1000执行dummy_fn,取:0.2128157615661621 但是,如果我重新定义dummy_fn以获取更多的参数并传递

  • 问题内容: 是否有一种简单的方法可以在Go中格式化字符串而不打印字符串? 我可以: 但是我希望返回格式化的字符串而不是打印出来的字符串,以便我可以进一步处理它。 我也可以做类似的事情: 但这在格式字符串很复杂时很难阅读,而在一个或多个部分不是字符串而必须首先转换的时候(例如, 有没有更简单的方法可以做到这一点? 问题答案: Sprintf是您想要的。 例 您还可以在“ 错误”示例中看到它在使用中,

  • 但是当格式字符串很复杂时,这就变得很难理解,当一个或多个部分不是字符串并且必须首先转换时,这就变得很麻烦,比如 有没有更简单的方法做到这一点?

  • 获取输入字符串,将其反转并用“-”进行解析: 输入:计算机 输出: 为什么这段代码会出现错误,以及如何删除错误? 出现以下错误: 主要的java:3:错误:类ClassSet15是公共的,应该在名为ClassSet15的文件中声明。java公共类ClassSet15{^1错误