Java 如何把一个班变成两个班

Java 如何把一个班变成两个班,java,Java,我完成了一个程序,将一个介于1到3999之间的数字转换成罗马数字,我让它工作了,但我必须把它分为两类,一个主类和一个测试类,我该怎么做?我知道这可能是一个非常简单的问题,但我似乎不知道如何将它们划分为一个主类和一个tester类 public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Welcome to integer to

我完成了一个程序,将一个介于1到3999之间的数字转换成罗马数字,我让它工作了,但我必须把它分为两类,一个主类和一个测试类,我该怎么做?我知道这可能是一个非常简单的问题,但我似乎不知道如何将它们划分为一个主类和一个tester类

public static void main(String[] args)     
{
    Scanner scan = new Scanner(System.in);
    System.out.println("Welcome to integer to Roman numeral conversion program ");
    System.out.println("------------------------------------------------------ ");
    System.out.print("Please enter an integer in the range 1-3999 (both inclusive): ");
    int number= scan.nextInt();
    String numberString="";
    if (number<=1||number >3999)
    {
        System.out.println("Sorry, the number is outside the range. Good bye!");
        System.exit(0);
    }
    switch ((number%10000)/1000)  
    {
        case 1:  numberString += "M";
            break;
        case 2:  numberString += "MM";
             break;
        case 3:  numberString += "MMM";
             break;
    }
    switch ((number%1000)/100) 
    {
        case 1:  numberString += "C";
             break;
        case 2:  numberString += "CC";
             break;
        case 3:  numberString += "CCC";
             break;
        case 4:  numberString += "CD";
             break;
        case 5:  numberString += "D";
              break;
        case 6:  numberString += "DC";
              break;
        case 7:  numberString += "DCC";
              break;
        case 8:  numberString += "DCCC";
             break;
        case 9:  numberString += "CM";
             break;
    }
    switch ((number%100)/10) 
    {
        case 1:  numberString += "X";
             break;
        case 2:  numberString += "XX";
             break;
        case 3:  numberString += "XXX";
             break;
        case 4:  numberString += "XL";
             break;
        case 5:  numberString += "L";
             break;
        case 6:  numberString += "LX";
             break;
        case 7:  numberString += "LXX";
             break;
        case 8:  numberString += "LXXX";
             break;
        case 9:  numberString += "XC";
             break;
    }
    switch (number%10) 
    {
        case 1:  numberString += "I";
             break;
        case 2:  numberString += "II";
             break;
        case 3:  numberString += "III";
             break;
        case 4:  numberString += "IV";
             break;
        case 5:  numberString += "V";
             break;
        case 6:  numberString += "VI";
             break;
        case 7:  numberString += "VII";
             break;
        case 8:  numberString += "VIII";
             break;
        case 9:  numberString += "IX";
             break;
    }

    System.out.println(number + " in Roman numerals is " + numberString);
    System.out.println("Thanks for using my program. Good bye!");
    System.exit(0);
}
publicstaticvoidmain(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
System.out.println(“欢迎使用整数到罗马数字转换程序”);
System.out.println(“--------------------------------------------------------------”);
System.out.print(“请输入1-3999(包括1-3999)之间的整数):”;
int number=scan.nextInt();
字符串numberString=“”;
如果(399号)
{
System.out.println(“对不起,号码超出范围。再见!”);
系统出口(0);
}
开关((数量%10000)/1000)
{
案例1:numberString+=“M”;
打破
案例2:numberString+=“MM”;
打破
案例3:numberString+=“MMM”;
打破
}
开关((编号%1000)/100)
{
案例1:numberString+=“C”;
打破
案例2:numberString+=“CC”;
打破
案例3:numberString+=“CCC”;
打破
案例4:numberString+=“CD”;
打破
案例5:numberString+=“D”;
打破
案例6:numberString+=“DC”;
打破
案例7:numberString+=“DCC”;
打破
案例8:numberString+=“DCCC”;
打破
案例9:numberString+=“CM”;
打破
}
开关((编号%100)/10)
{
案例1:numberString+=“X”;
打破
案例2:numberString+=“XX”;
打破
案例3:numberString+=“XXX”;
打破
案例4:numberString+=“XL”;
打破
案例5:numberString+=“L”;
打破
案例6:numberString+=“LX”;
打破
案例7:numberString+=“LXX”;
打破
案例8:numberString+=“LXXX”;
打破
案例9:numberString+=“XC”;
打破
}
开关(编号%10)
{
案例1:numberString+=“I”;
打破
案例2:numberString+=“II”;
打破
案例3:数字串+=“III”;
打破
案例4:数字串+=“IV”;
打破
案例5:numberString+=“V”;
打破
案例6:numberString+=“VI”;
打破
案例7:数字串+=“VII”;
打破
案例8:数字串+=“VIII”;
打破
案例9:numberString+=“IX”;
打破
}
System.out.println(罗马数字中的数字+”是“+numberString”);
System.out.println(“感谢使用我的程序,再见!”);
系统出口(0);
}

正如@Vikrant Kashyap指出的那样。您可以将其分解为测试类和转换类。我没有机会编译代码。让我知道这是否有效

java

public class RomanNumeralsTest
{
    public static void main(String[] args)     
    {
        Scanner scan = new Scanner(System.in);
        RomanNumerals rn = new RomanNumerals();
        System.out.println("Welcome to integer to Roman numeral conversion program ");
        System.out.println("------------------------------------------------------ ");
        System.out.print("Please enter an integer in the range 1-3999 (both inclusive): ");
        int number= scan.nextInt();
        if (number<=1||number >3999)
        {
            System.out.println("Sorry, the number is outside the range. Good bye!");
            System.exit(0);
        }

        System.out.println(number + " in Roman numerals is " + rn.convertToRomanNumeral(number));
        System.out.println("Thanks for using my program. Good bye!");
        System.exit(0);
    }

}

您不需要通过将重复代码放入新方法来生成更多的类您需要一个包含实际逻辑的类和另一个用于测试此逻辑的类。。。我说得对吗?只想拆分现有代码..是的,我必须保留主类,然后让测试人员运行程序。True。我想这取决于赋值。我这样做了,但现在对于主,它说找不到符号-变量numberstringidn没有意识到移动numberString。我更新了罗马数字课程。应该可以了,太好了!快乐编码!
public class RomanNumerals
{
    public String convertToRomanNumeral(int number)
    {
        String numberString = "";
        switch ((number%10000)/1000)  
        {
            case 1:  numberString += "M";
                break;
            case 2:  numberString += "MM";
                 break;
            case 3:  numberString += "MMM";
                 break;
        }
        switch ((number%1000)/100) 
        {
            case 1:  numberString += "C";
                 break;
            case 2:  numberString += "CC";
                 break;
            case 3:  numberString += "CCC";
                 break;
            case 4:  numberString += "CD";
                 break;
            case 5:  numberString += "D";
                  break;
            case 6:  numberString += "DC";
                  break;
            case 7:  numberString += "DCC";
                  break;
            case 8:  numberString += "DCCC";
                 break;
            case 9:  numberString += "CM";
                 break;
        }
        switch ((number%100)/10) 
        {
            case 1:  numberString += "X";
                 break;
            case 2:  numberString += "XX";
                 break;
            case 3:  numberString += "XXX";
                 break;
            case 4:  numberString += "XL";
                 break;
            case 5:  numberString += "L";
                 break;
            case 6:  numberString += "LX";
                 break;
            case 7:  numberString += "LXX";
                 break;
            case 8:  numberString += "LXXX";
                 break;
            case 9:  numberString += "XC";
                 break;
        }
        switch (number%10) 
        {
            case 1:  numberString += "I";
                 break;
            case 2:  numberString += "II";
                 break;
            case 3:  numberString += "III";
                 break;
            case 4:  numberString += "IV";
                 break;
            case 5:  numberString += "V";
                 break;
            case 6:  numberString += "VI";
                 break;
            case 7:  numberString += "VII";
                 break;
            case 8:  numberString += "VIII";
                 break;
            case 9:  numberString += "IX";
                 break;
        }
        return numberString;
    }       
}