我试图在同一行上打印一个字符串和int。但是我收到了一个错误。我知道解决这个错误的方法,但为什么行MemberNetworkViewModel root = whatever;
Flatten(
root,
node => node.MemberId,
node => node.children,
path => Console.WriteLine(string.Join(", ", path)));
给出了错误,而行System.out.println("This is a string: %i", c2.a);
给出了正确的输出。以下是我的代码。
System.out.println("This is class method" + c2.a );
我的另一个问题是,行public class MyClass
{
private int a;
public double b;
public MyClass(int first, double second)
{
this.a = first;
this.b = second;
}
// new method
public static void incrementBoth(MyClass c1) {
c1.a = c1.a + 1;
c1.b = c1.b + 1.0;
}
//pass by valuye therefore no change
public static void incrementA(int a)
{
a = a+1;
}
public static void main(String[] args)
{
MyClass c1 = new MyClass(10, 20.5);
MyClass c2 = new MyClass(10, 31.5);
// different code below
incrementBoth(c2);
incrementA(c1.a);
System.out.println("This is a object passing: %i",c2.a);
System.out.println("This is object passing: " + c2.a );
System.out.println("This is pass by value: %d",c1.a);
}
}
是否会更改c2的值,因为这里将整个对象传递给方法,而不是在incrementBoth(c2)
中传递值
答案 0 :(得分:4)
您需要使用printf
方法,而不是println
。
println
用于按原样打印基本类型,字符串和对象。此外,println只接受一个参数作为输入。这就是当你在代码中向它传递多个参数时出现错误的原因。
printf
用于格式化,然后将格式化的字符串打印到标准输出/错误。这是您在上面的代码中应该使用的格式化输出。
希望这有帮助!