问题1:
原程序有点长有点乱,我写一个来表达:class account{
String name;
double balance;
account(String a,double){
name=a;
balance=b;
}
void print(String str){
System.out.println(name+str+" "+balance);
}public class test{
public static void main(String[] args){
account obj=new account("Tom",200.0);
obj.print("交易前:");//<-就是这两个地方,我不知道格式该怎么写
obj.print("交易后:");//<-意思就是传给print的(String str)
} // 我想知道在一行语句里面完成目的的方法
} //就是不定义一个String变两赋值在把变量写进去
//试过New了,但是不会写.到底语法允许这样写不?-----------------------------------------------------------------------
问题2:
还有我想用格式化的输出,想在输出的时候让double 变量 balance显示一位小数
之前我看了几个格式化输入的文章,如下:***********参考文章***************
简单说明: a.格式描述符: 1. L或l - 使数字左对齐(缺省是右对齐)
2. C或c - 使数字居中对齐(缺省是右对齐)
3. X或x - 显示数字为十六进制(缺省是十进制)
4. B或b - 显示数字为八进制(缺省是十进制)
5. ,(半角逗号)- 千位分隔符
6. S或s - 显示数字为科学记数法
7. Z或z - 用零填空位(缺省是空格)
8. w.d (两个整数用半角句号隔开)- 指定输出域宽及精度 b. "fillChar"是填空位符(缺省为空格)
--你可以用MyOut.fillChar = '*'或'$'来定义你自己的空位符
举例:
println(123.45678, "8.3L") ->; 123.457(左对齐占八位)
println(123.45678, "10.3cs") ->; 1.235E2 (居中占十位)
println(1234567, ",10") ->; 1,234,567(右对齐占十位)
// class MyOut
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.OutputStreamWriter;
import java.text.DecimalFormat;
import java.text.NumberFormat;*********文章结束*********
我把以上提示的包也引入了
然后我把问题一的print语句写成
void print(){
System.out.println("金额"+balance, ".1L");
}
解释报错说:
符号: 方法println(java.lang.String,java.lang)
位置: 类 java.io.PrintStream
那就是说我引入的类都没有定义println的这个用法是吧?还是我用错了?
好迷惘啊~~请各位热心人帮助赐教!不胜感激!
原程序有点长有点乱,我写一个来表达:class account{
String name;
double balance;
account(String a,double){
name=a;
balance=b;
}
void print(String str){
System.out.println(name+str+" "+balance);
}public class test{
public static void main(String[] args){
account obj=new account("Tom",200.0);
obj.print("交易前:");//<-就是这两个地方,我不知道格式该怎么写
obj.print("交易后:");//<-意思就是传给print的(String str)
} // 我想知道在一行语句里面完成目的的方法
} //就是不定义一个String变两赋值在把变量写进去
//试过New了,但是不会写.到底语法允许这样写不?-----------------------------------------------------------------------
问题2:
还有我想用格式化的输出,想在输出的时候让double 变量 balance显示一位小数
之前我看了几个格式化输入的文章,如下:***********参考文章***************
简单说明: a.格式描述符: 1. L或l - 使数字左对齐(缺省是右对齐)
2. C或c - 使数字居中对齐(缺省是右对齐)
3. X或x - 显示数字为十六进制(缺省是十进制)
4. B或b - 显示数字为八进制(缺省是十进制)
5. ,(半角逗号)- 千位分隔符
6. S或s - 显示数字为科学记数法
7. Z或z - 用零填空位(缺省是空格)
8. w.d (两个整数用半角句号隔开)- 指定输出域宽及精度 b. "fillChar"是填空位符(缺省为空格)
--你可以用MyOut.fillChar = '*'或'$'来定义你自己的空位符
举例:
println(123.45678, "8.3L") ->; 123.457(左对齐占八位)
println(123.45678, "10.3cs") ->; 1.235E2 (居中占十位)
println(1234567, ",10") ->; 1,234,567(右对齐占十位)
// class MyOut
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.OutputStreamWriter;
import java.text.DecimalFormat;
import java.text.NumberFormat;*********文章结束*********
我把以上提示的包也引入了
然后我把问题一的print语句写成
void print(){
System.out.println("金额"+balance, ".1L");
}
解释报错说:
符号: 方法println(java.lang.String,java.lang)
位置: 类 java.io.PrintStream
那就是说我引入的类都没有定义println的这个用法是吧?还是我用错了?
好迷惘啊~~请各位热心人帮助赐教!不胜感激!
所有的print()/println()都是最多只能带一个参数,如果你想用他们输出的话,可以用格式化函数java.text.DecimalFormat,先把要输出的数字格式化,然后再输出:
例如:double d = 12345.6789舍入,那么:
DecimalFormat ddf = new DecimalFormat("#0.00");//2位小数
DecimalFormat ddf1 = new DecimalFormat("#0.0");//1位小数
String result = ddf.format(d);//格式化后是String
关于他的具体用法可以参照java docs
printf(String format, Object... args) 是至少有一个参数:
double dd = -1234.321;
System.out.printf("%1$.1f", dd);//要一位小数
它的用法与C++多了一个位置位,用1$表示后面的第一个对应数,2$表示第二个,以此类推...数字的格式方式和C++一样, .1f表示小数点后面一位小数
System.out.printf("%1$.1f", dd);//java写法
printf(("%.1f", dd);//c++写法
的就是一样的写法了。
System.out.println(name+str+" "+balance+
name+str2+" "+balance);
}obj.print("交易前:","交易后:");???