在这个程序中输入的如果都是字母就可以整齐输入,但是如果我输出的有中文字符为什么格式就变乱了,这该怎么修改呢,使其不论是什么字符串都可以统一输出!另外 为什么我在红色区域 用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;
         }

}

解决方案 »

  1.   

    *******************************************************************/
    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){}
    }
    /*******************************************************************/
    刚才红色区域没有显示
      

  2.   

    String.format();
    你用这个方法看能不能控制格式
    例如 
    format("%5s5s","一一","二二"); 
    指定每个字符串占用的宽度
      

  3.   

    jdk5.0以后可以指定输出格式,String.format(“输出格式”);