在这个程序中输入的如果都是字母就可以整齐输入,但是如果我输出的有中文字符为什么格式就变乱了,这该怎么修改呢,使其不论是什么字符串都可以统一输出!另外 为什么我在红色区域 用continue L: 和while()做循环想使其在价格输入成功再转入下一行,可是却多次失败,我快放弃这个地方了,大家帮帮吧,
import java.io.*;
import java.util.*;
import java.text.*;
public class testone{
static user u[]=new user[5];
public static void main (String[] args) {
int i=0;
int k=0;
System.out.println(" 图书管理系统1.0版");
System.out.println("************************");
while(true){
String s="";
BufferedReader buf=new BufferedReader(new InputStreamReader (System.in));
boolean b=true,t=true;
L1:
while(true){
try{
System.out.println( "输入你的选择<输入1、2、3或者4>\n"+
"1.添加图书\n"+
"2.查询图书\n"+
"3.显示信息\n"+
"0.退出系统\n");
s=buf.readLine();
k=Integer.parseInt(s);
if(k<0&&k>4){
System.out.println("你的输入不合符要求,请重新输入:");
continue L1;
}
else
break;
}catch(Exception e){
System.out.println("你的输入不合符要求,请重新输入:");
continue L1;}
}
switch(k){
case 1:
while(t){
user us=new user();
us.user();
u[i]=us;
System.out.println("你还要继续输入吗 Y/N?");
try{
s=buf.readLine();
if(s.equals("n")) break;
}catch(IOException e){}
i++;
}
i++;
break;
case 2:{
user us=new user();
us.usereseach(u,i);
break;}
case 3:{
user us=new user();
us.output(u,i);
break; }
case 0:
System.out.println("Goodbye!");
System.exit(1);
}
}
}
}
class user{
private String username=null;
private String usernum ="";
private String userad ="";
private String artist ="";
private float price =0.0f;
private Date datetime=new Date();
/*******************************************************************/
void user(){//类构造方法
try{
System.out.println("图书名称");
username=input();
System.out.println("图书ISBN");
usernum=input();
System.out.println("作者名称");
artist=input();
System.out.println("图书价格");
try{
price=Float.parseFloat(input());
}catch(Exception e){
} System.out.println("出版社");
userad=input();
System.out.println("出版日期");
datetime=pub();
}catch(Exception e){}
}
/*******************************************************************/
public String input(){//输入方法
String s="";
BufferedReader buf=new BufferedReader(new InputStreamReader (System.in));
try{s=buf.readLine();}catch(Exception e){}
return s;
}
public void output(user u[],int k){//所有信息输出
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<k;i++){
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
}
/*******************************************************************/
void usereseach(user u[],int n1){//图书查找方法
int k=0;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String oldname="";
int num=1;
System.out.println("选择你要进行的操作");
System.out.println("1,图书名称\n2.出版社\n3.地址");
try{
num=Integer.parseInt(input());
}catch(Exception e){}
switch (num)
{
case 1:
System.out.println("请输入图书名称");
try{
oldname=input();
}catch(Exception e){ }
System.out.println("你要查询的是"+oldname);
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<n1;i++)
if(u[i].username.equals(oldname))//名称查询
{ k++;
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
if(k==0)
System.out.println("没有你要查询的资料:");
else System.out.println("共找到符合你条件的 "+k+" 本资料");
break;
case 2:
System.out.println("请输入出版社");
try{
oldname=input();
}catch(Exception e){ }
System.out.println("你要查询的是"+oldname);
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<n1;i++)
if(u[i].usernum.equals(oldname))//号码查询方式
{ k++;
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
if(k==0)
System.out.println("没有你要查询的资料:");
else System.out.println("共找到符合你条件的 "+k+" 本资料");
break;
case 3:
System.out.println("请输入isbn");
try{
oldname=input();
}catch(Exception e){ }
System.out.println("你要查询的是"+oldname);
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<n1;i++)
if(u[i].userad.equals(oldname))// 地址查询方式
{ k++;
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
if(k==0)
System.out.println("没有你要查询的资料:");
else System.out.println("共找到符合你条件的 "+k+" 本资料");
break;
}
}
public String getName(){
return username;
}
public String getNum(){
return usernum;
}
public String getAd(){
return userad;
}
/*******************************************************************/
public Date pub() { //时间输入方法
String s="";
String str[]= new String[3];
Date dt=new Date();
boolean b=true;
L:
while(b){
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
try{
s=buf.readLine();
dt=sdf.parse(s);
str=s.split("-");
}catch(Exception e){
System.out.println("输入日期格式错误!请按照yyyy-MM-dd格式输入");
continue L;}
if((dt.getMonth()+1)!=Integer.parseInt(str[1])&&
dt.getDay()!=Integer.parseInt(str[2])&&
dt.getYear()!=Integer.parseInt(str[0]))
{
System.out.println(" 输入日期格式错误!请按照yyyy-MM-dd格式输入");
continue L;
}
else b=false;
}
return dt;
}
}
import java.io.*;
import java.util.*;
import java.text.*;
public class testone{
static user u[]=new user[5];
public static void main (String[] args) {
int i=0;
int k=0;
System.out.println(" 图书管理系统1.0版");
System.out.println("************************");
while(true){
String s="";
BufferedReader buf=new BufferedReader(new InputStreamReader (System.in));
boolean b=true,t=true;
L1:
while(true){
try{
System.out.println( "输入你的选择<输入1、2、3或者4>\n"+
"1.添加图书\n"+
"2.查询图书\n"+
"3.显示信息\n"+
"0.退出系统\n");
s=buf.readLine();
k=Integer.parseInt(s);
if(k<0&&k>4){
System.out.println("你的输入不合符要求,请重新输入:");
continue L1;
}
else
break;
}catch(Exception e){
System.out.println("你的输入不合符要求,请重新输入:");
continue L1;}
}
switch(k){
case 1:
while(t){
user us=new user();
us.user();
u[i]=us;
System.out.println("你还要继续输入吗 Y/N?");
try{
s=buf.readLine();
if(s.equals("n")) break;
}catch(IOException e){}
i++;
}
i++;
break;
case 2:{
user us=new user();
us.usereseach(u,i);
break;}
case 3:{
user us=new user();
us.output(u,i);
break; }
case 0:
System.out.println("Goodbye!");
System.exit(1);
}
}
}
}
class user{
private String username=null;
private String usernum ="";
private String userad ="";
private String artist ="";
private float price =0.0f;
private Date datetime=new Date();
/*******************************************************************/
void user(){//类构造方法
try{
System.out.println("图书名称");
username=input();
System.out.println("图书ISBN");
usernum=input();
System.out.println("作者名称");
artist=input();
System.out.println("图书价格");
try{
price=Float.parseFloat(input());
}catch(Exception e){
} System.out.println("出版社");
userad=input();
System.out.println("出版日期");
datetime=pub();
}catch(Exception e){}
}
/*******************************************************************/
public String input(){//输入方法
String s="";
BufferedReader buf=new BufferedReader(new InputStreamReader (System.in));
try{s=buf.readLine();}catch(Exception e){}
return s;
}
public void output(user u[],int k){//所有信息输出
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<k;i++){
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
}
/*******************************************************************/
void usereseach(user u[],int n1){//图书查找方法
int k=0;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String oldname="";
int num=1;
System.out.println("选择你要进行的操作");
System.out.println("1,图书名称\n2.出版社\n3.地址");
try{
num=Integer.parseInt(input());
}catch(Exception e){}
switch (num)
{
case 1:
System.out.println("请输入图书名称");
try{
oldname=input();
}catch(Exception e){ }
System.out.println("你要查询的是"+oldname);
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<n1;i++)
if(u[i].username.equals(oldname))//名称查询
{ k++;
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
if(k==0)
System.out.println("没有你要查询的资料:");
else System.out.println("共找到符合你条件的 "+k+" 本资料");
break;
case 2:
System.out.println("请输入出版社");
try{
oldname=input();
}catch(Exception e){ }
System.out.println("你要查询的是"+oldname);
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<n1;i++)
if(u[i].usernum.equals(oldname))//号码查询方式
{ k++;
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
if(k==0)
System.out.println("没有你要查询的资料:");
else System.out.println("共找到符合你条件的 "+k+" 本资料");
break;
case 3:
System.out.println("请输入isbn");
try{
oldname=input();
}catch(Exception e){ }
System.out.println("你要查询的是"+oldname);
System.out.println("图书名称 图书编号 出版社名称 作者 图书价格 出版时间");
for(int i=0;i<n1;i++)
if(u[i].userad.equals(oldname))// 地址查询方式
{ k++;
System.out.printf("%-15s",u[i].username);
System.out.printf("%-10s",u[i].usernum);
System.out.printf("%-15s",u[i].userad);
System.out.printf("%-10s",u[i].artist);
System.out.printf("%-8.2f",u[i].price);
System.out.println(sdf.format(u[i].datetime));
}
if(k==0)
System.out.println("没有你要查询的资料:");
else System.out.println("共找到符合你条件的 "+k+" 本资料");
break;
}
}
public String getName(){
return username;
}
public String getNum(){
return usernum;
}
public String getAd(){
return userad;
}
/*******************************************************************/
public Date pub() { //时间输入方法
String s="";
String str[]= new String[3];
Date dt=new Date();
boolean b=true;
L:
while(b){
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
try{
s=buf.readLine();
dt=sdf.parse(s);
str=s.split("-");
}catch(Exception e){
System.out.println("输入日期格式错误!请按照yyyy-MM-dd格式输入");
continue L;}
if((dt.getMonth()+1)!=Integer.parseInt(str[1])&&
dt.getDay()!=Integer.parseInt(str[2])&&
dt.getYear()!=Integer.parseInt(str[0]))
{
System.out.println(" 输入日期格式错误!请按照yyyy-MM-dd格式输入");
continue L;
}
else b=false;
}
return dt;
}
}
void user(){//类构造方法
try{
System.out.println("图书名称");
username=input();
System.out.println("图书ISBN");
usernum=input();
System.out.println("作者名称");
artist=input();
System.out.println("图书价格");
try{
price=Float.parseFloat(input());
}catch(Exception e){
} System.out.println("出版社");
userad=input();
System.out.println("出版日期");
datetime=pub();
}catch(Exception e){}
}
/*******************************************************************/
刚才红色区域没有显示
你用这个方法看能不能控制格式
例如
format("%5s5s","一一","二二");
指定每个字符串占用的宽度