/*
 * Main.java
 *
 * InToEnglish Java application
 *
 * Created on 21-09-2008 12:05 AM
 */     import java.util.Random;
import javax.swing.*;
import java.text.*;public class Main{
    public static void main(String[] args) {
     int i = 0;
     Random generator = new Random();
     int number = generator.nextInt(101);
     int number1 = 0;
     int number2 = 0;
     int number3 = 0;
     String[] num = { "zero",  "one",   "two",  "three", "four",   "five",   "six", "seven", "eight", "nine", "ten",   "eleven", "twelve", "thirteen","fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
     String[] tens  = {"","", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty","nintety"};
     String[] hundreds={"","one hundred","two hundreds","three hundreds","four hundreds","five hundreds","six hundreds","seven hundreds","eight hundreds","nine hundreds"};
     
     
     
     
     
     String input = JOptionPane.showInputDialog(null, "Enter an interger number within 0-9999:");
  i = (int) Double.parseDouble(input);
  //xxxx start
  if (i<10000  ){
  if (i>999){
  number =0;
     number = i/1000;
     number1 = i%1000/100;
     number2 = i%100;
     number3=0;
     if (number2<20){
     if (number2==0)
     { 
     number2=0;
     System.out.println( i + " is " +num[number] +" thousand(s) "+hundreds[number1]);
     } if (number2>0){
number3=number2;
number2= 0;
System.out.println( i + " is " +num[number] +" thousand(s) "+hundreds[number1] +" "+ tens[number2] + " and "+ num[number3]); }

if (number2>19 ){
number3=number2%10;
number2=number2/10;


//System.out.println(number2+"num " +number3);
System.out.println( i + " is " +num[number] +" thousand(s) "+hundreds[number1] +" "+ tens[number2] + " and "+ num[number3]);  }
      
      //System.out.println( i + " " +number +"    and"+number1 + "  and "+ number2 + "AND"+ number3);
     }
  }
  }
   //xxxx end
  //xxx start
if (i <1000){
if (i>99)
{
number =0;
 number1 =0;
 number1 = i /100;
 number2 = 0;
 number2 = i %100;

if (number2<20){
number3=number2;
number2= 0;}
 if (number2>19){
number3=number2%10;
number2=number2/10;}
 
System.out.println( i + " is "+hundreds[number1] +" " + tens[number2] + " and "+ num[number3]);
}
    }
//xxx end
 //XX start
 if (i> 0 ){
if (i<99){
number=0;
number1=0;
number2=i;
//System.out.println(i+" is "+ number2+"  "+number3);
if (number2<20){
number3=number2;
number2= 0;
System.out.println(i +" is "+ num[number3]);
}

if (number2>19){
number3=number2%10;
number2=number2/10;

//System.out.println(i+" "+ number2+"  "+number3);
System.out.println(i +" is "+ tens[number2] + " "+ num[number3]);
}



}
 }
//xx end效果是輸入數字出英文數字

解决方案 »

  1.   

    if (number2 < 20) {
    if (number2 == 0) {
    number2 = 0;
    System.out.println(i + " is " + num[number] + " thousand(s) " + hundreds[number1]);
    } if (number2 > 0) {
    number3 = number2;
    number2 = 0;
    System.out.println(i + " is " + num[number] + " thousand(s) " + hundreds[number1] + " " + tens[number2] + " and " + num[number3]); } if (number2 > 19) {
    number3 = number2 % 10;
    number2 = number2 / 10; // System.out.println(number2+"num " +number3);
    System.out.println(i + " is " + num[number] + " thousand(s) " + hundreds[number1] + " " + tens[number2] + " and " + num[number3]); } // System.out.println( i + " " +number +" and"+number1 + "
    // and "+
    // number2 + "AND"+ number3);
    }
    }你的这一段逻辑很乱,没有充分考虑到4位数的情况,也没有判断number2>=20的情况,对于1120以上数,你就没有办法进行判断了。
      

  2.   

    你有一个括号打错了位置,并且 在输出的时候 and 的位置也要改一下,正确的代码如下:import java.util.Random; 
    import javax.swing.*; 
    import java.text.*; public class Main{
        public static void main(String[] args) { 
        int i = 0; 
        Random generator = new Random(); 
        int number = generator.nextInt(101); 
        int number1 = 0; 
        int number2 = 0; 
        int number3 = 0; 
        String[] num = { "zero",  "one",  "two",  "three", "four",  "five",  "six", "seven", "eight", "nine", "ten",  "eleven", "twelve", "thirteen","fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; 
        String[] tens  = {"","", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty","nintety"}; 
        String[] hundreds={"","one hundred","two hundreds","three hundreds","four hundreds","five hundreds","six hundreds","seven hundreds","eight hundreds","nine hundreds"}; 
        
        
        
        
        
        String input = JOptionPane.showInputDialog(null, "Enter an interger number within 0-9999:"); 
      i = (int) Double.parseDouble(input); 
      //xxxx start 
      if (i <10000  ){ 
      if (i>999){ 
      number =0; 
        number = i/1000; 
        number1 = i%1000/100; 
        number2 = i%100; 
        number3=0; 
        if (number2 <20){ 
        if (number2==0) 
        { 
        number2=0; 
        System.out.println( i + " is " +num[number] +" thousand(s) "+hundreds[number1]); 
        } if (number2>0){ 
    number3=number2; 
    number2= 0; 
    System.out.println( i + " is " +num[number] +" thousand(s) "+hundreds[number1] +" "+ tens[number2] + " and "+ num[number3]); } 
        }
    if (number2>19 ){ 
    number3=number2%10; 
    number2=number2/10; 
    //System.out.println(number2+"num " +number3); 
    System.out.println( i + " is " +num[number] +" thousand(s) "+hundreds[number1] +" and  "+ tens[number2] + " "+ num[number3]);   } 
          
          //System.out.println( i + " " +number +"    and"+number1 + "  and "+ number2 + "AND"+ number3); 
        } 
      }   //xxxx end 
      //xxx start 
    if (i <1000){ 
    if (i>99) 

    number =0; 
    number1 =0; 
    number1 = i /100; 
    number2 = 0; 
    number2 = i %100; if (number2 <20){ 
    number3=number2; 
    number2= 0;} 
    if (number2>19){ 
    number3=number2%10; 
    number2=number2/10;} System.out.println( i + " is "+hundreds[number1] +" and " + tens[number2] + "  "+ num[number3]); 

        } 
    //xxx end 
    //XX start 
    if (i> 0 ){ 
    if (i <99){ 
    number=0; 
    number1=0; 
    number2=i; 
    //System.out.println(i+" is "+ number2+"  "+number3); 
    if (number2 <20){ 
    number3=number2; 
    number2= 0; 
    System.out.println(i +" is "+ num[number3]); 
    } if (number2>19){ 
    number3=number2%10; 
    number2=number2/10; //System.out.println(i+" "+ number2+"  "+number3); 
    System.out.println(i +" is "+ tens[number2] + " "+ num[number3]); 
    }
    }
    }
    }
    }
      

  3.   

    调整一下代码格式:
    import java.util.Random;
    import javax.swing.*;
    import java.text.*;public class Main {
    public static void main(String[] args) {
    int i = 0;
    Random generator = new Random();
    int number = generator.nextInt(101);
    int number1 = 0;
    int number2 = 0;
    int number3 = 0;
    String[] num = { "zero", "one", "two", "three", "four", "five", "six",
    "seven", "eight", "nine", "ten", "eleven", "twelve",
    "thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
    "eighteen", "nineteen" };
    String[] tens = { "", "", "twenty", "thirty", "forty", "fifty",
    "sixty", "seventy", "eighty", "nintety" };
    String[] hundreds = { "", "one hundred", "two hundreds",
    "three hundreds", "four hundreds", "five hundreds",
    "six hundreds", "seven hundreds", "eight hundreds",
    "nine hundreds" }; String input = JOptionPane.showInputDialog(null,
    "Enter an interger number within 0-9999:");
    i = (int) Double.parseDouble(input);
    // xxxx start
    if (i < 10000) {
    if (i > 999) {
    number = 0;
    number = i / 1000;
    number1 = i % 1000 / 100;
    number2 = i % 100;
    number3 = 0;
    if (number2 < 20) {
    if (number2 == 0) {
    number2 = 0;
    System.out.println(i + " is " + num[number]
    + " thousand(s) " + hundreds[number1]);
    } if (number2 > 0) {
    number3 = number2;
    number2 = 0;
    System.out.println(i + " is " + num[number]
    + " thousand(s) " + hundreds[number1] + " "
    + tens[number2] + " and " + num[number3]); }
    }
    if (number2 > 19) {
    number3 = number2 % 10;
    number2 = number2 / 10; // System.out.println(number2+"num " +number3);
    System.out.println(i + " is " + num[number]
    + " thousand(s) " + hundreds[number1] + " and  "
    + tens[number2] + " " + num[number3]); } // System.out.println( i + " " +number +" and"+number1 + " and
    // "+ number2 + "AND"+ number3);
    }
    } // xxxx end
    // xxx start
    if (i < 1000) {
    if (i > 99) {
    number = 0;
    number1 = 0;
    number1 = i / 100;
    number2 = 0;
    number2 = i % 100; if (number2 < 20) {
    number3 = number2;
    number2 = 0;
    }
    if (number2 > 19) {
    number3 = number2 % 10;
    number2 = number2 / 10;
    } System.out.println(i + " is " + hundreds[number1] + " and "
    + tens[number2] + "  " + num[number3]);
    }
    }
    // xxx end
    // XX start
    if (i > 0) {
    if (i < 99) {
    number = 0;
    number1 = 0;
    number2 = i;
    // System.out.println(i+" is "+ number2+" "+number3);
    if (number2 < 20) {
    number3 = number2;
    number2 = 0;
    System.out.println(i + " is " + num[number3]);
    } if (number2 > 19) {
    number3 = number2 % 10;
    number2 = number2 / 10; // System.out.println(i+" "+ number2+" "+number3);
    System.out.println(i + " is " + tens[number2] + " "
    + num[number3]);
    }
    }
    }
    }
    }