Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';在java中,我是否将一个变量作为格式字符串传递给System.out.printf(…)?_Java_Printf - Fatal编程技术网

为什么可以';在java中,我是否将一个变量作为格式字符串传递给System.out.printf(…)?

为什么可以';在java中,我是否将一个变量作为格式字符串传递给System.out.printf(…)?,java,printf,Java,Printf,我试图用Java向System.out.printf(…)传递一个字符串对象,但我一直收到这个错误“Java.util.FormatFlagsConversionMismatchException:Conversion=s,Flags=0”,这对我来说实际上没有多大意义 String format = "%" + (3 * n) + "s"; // n is an int defined somewhere above, could be 0 System.out.printf(format,

我试图用Java向System.out.printf(…)传递一个字符串对象,但我一直收到这个错误
“Java.util.FormatFlagsConversionMismatchException:Conversion=s,Flags=0”
,这对我来说实际上没有多大意义

String format = "%" + (3 * n) + "s"; // n is an int defined somewhere above, could be 0
System.out.printf(format, "My string");
有人知道这是允许的吗

有关详细信息,请编辑:

int n = 0;
String fm = "%" + (3 * level) + "s";
String realFm = "%0s";
System.out.println("fm = " + fm);
System.out.println("realfm = " + realFm);
System.out.println("equals? " + (fm.equals(realFm)));
System.out.printf(fm, " ");
以下是输出:

fm = %0s
realfm = %0s
equals? true
java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0

谢谢

是的,这是允许的,但如果n为0,它将不起作用。是否存在发生这种情况的可能性(从错误消息中看起来是这样的)

如果在代码中添加一行以进行调试,该怎么办:

// line added below for debugging. To remove later:
System.out.println("n is: " + n); 

String format = "%" + (3 * n) + "s"; // n is an int defined somewhere above
System.out.printf(format, "My string");
它是否打印过
n is:0?

e、 g

publicstaticvoidmain(字符串[]args){
//尝试n=0与n=1的for循环

对于(int n=1;n我已经用代码和输出的详细信息更新了帖子。请检查。Thanks@user1064918:我给出的答案是正确的--标志不能为0。您需要修复代码以防止发生这种情况。您更新的代码仍然没有显示n不为零的示例。格式字符串
%0s
无效。
public static void main(String[] args) {

  // try the for loop with n = 0 vs. n = 1
  for (int n = 1; n <= 10; n++) {
     // line added below for debugging. To remove later:
     System.out.println("\nn is: " + n); 

     String format = "%" + (3 * n) + "s"; 
     System.out.printf(format, "My string");
  }      
}