Java的String.format方法中的可变宽度

时间:2012-12-09 05:56:19

标签: java string string-formatting

我正在开展一个需要显示文本树的项目。我正在尝试使用Java的String.format方法来简化格式化过程,但在尝试应用可变宽度时遇到了麻烦。

当前我有一个变量(一个int),称为深度。

我尝试执行以下操作:

String.format("%"+depth+"s"," ") + getOriginalText() + "\n";

但是我收到以下错误。

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0

有关如何执行此操作的任何建议,还是我应该解决循环问题?

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

这有效:

int depth = 5;
String str= "Hello"+ String.format("%"+depth+"s"," ") + "world" + "\n";
System.out.println(str);

它打印5而其间有空格。

  

您好世界。

请检查您的代码并确保为depth分配了有效的int值。最有可能的是(depth中的无效值)是问题。

答案 1 :(得分:0)

您可以使用“ System.out.printf”命令尝试以下操作:

export const fetchWords = projectID => async dispatch => {
  const db = firebase.firestore();
  const docsData = [];

  db.collection("names")
    .where("project_ID", "==", projectID)
    .orderBy("total_score", "desc")
    .get()
    .then(data => data.docs.map(doc => docsData.push(doc.data())))
    .catch(err => console.log(err));

  dispatch({
    type: FETCH_WORDS,
    payload: docsData
  });
};
  

你好世界