Newbie Java:使用word格式的数字创建和编写txt文件?

时间:2013-09-28 02:17:14

标签: java methods printwriter

为我的第一次Java考试做好准备并且遇到某个方法的问题。以下问题只是一个将四个方法合并为一个Java文件的方法。

  

问题:

     

编写代码以创建一个名为“exam1.txt”的新文件并打印出来   跟随文件到文件:

     

第一行第二行第三行

这是我到目前为止所做的:

import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class problem2 {

    public static void main(String[] args) throws FileNotFoundException {
        String exam1 = "Exam1.txt";

        PrintWriter printWriter = new PrintWriter(exam1);
        for(int n = 0; n < 4; n++){
            printWriter.printf("Line %d\n", n);
        }
        printWriter.close();

    }

}

我坚持的是弄清楚如何将数字转换为实际的单词;例如,“1”变为“一”。我对for循环的选择是否正确解决了这个问题?我知道如何通过打印每一行来做很长的路,但我想我会学到正确的方法。

2 个答案:

答案 0 :(得分:0)

  

我坚持的是弄清楚如何将数字转换成数字   实际的话。

这是将数字转换为单词的代码。这将有助于你

import java.util.Scanner;

class NumberToString
{

    public enum hundreds {OneHundred, TwoHundred, ThreeHundred, FourHundred, FiveHundred, SixHundred, SevenHundred, EightHundred, NineHundred}
    public enum tens {Twenty, Thirty, Forty, Fifty, Sixty, Seventy, Eighty, Ninety}
    public enum ones {One, Two, Three, Four, Five, Six, Seven, Eight, Nine}
    public enum denom {Thousand, Lakhs, Crores}
    public enum splNums { Ten, Eleven, Twelve, Thirteen, Fourteen, Fifteen, Sixteen, Seventeen, Eighteen, Nineteen}
    public static String text = "";

    public static void main(String[] args) 
    {
        System.out.println("Enter Number to convert into words");
        Scanner sc = new Scanner(System.in);
        long num = sc.nextInt();
        int rem = 0;
        int i = 0;
        while(num > 0)
        {
            if(i == 0){
                rem = (int) (num % 1000);
                printText(rem);
                num = num / 1000;
                i++;
            }
            else if(num > 0)
            {
                rem = (int) (num % 100);
                if(rem > 0)
                    text = denom.values()[i - 1]+ " " + text;
                printText(rem);
                num = num / 100;
                i++;
            }
        }
        if(i > 0)
            System.out.println(text);
        else
            System.out.println("Zero");
    }

    public static void printText(int num)
    {
        if(!(num > 9 && num < 19))
        {
            if(num % 10 > 0)
                getOnes(num % 10);

            num = num / 10;
            if(num % 10 > 0)
                getTens(num % 10);

            num = num / 10;
            if(num > 0)
                getHundreds(num);
        }
        else
        {
            getSplNums(num % 10);
        }
    }

    public static void getSplNums(int num)
    {
        text = splNums.values()[num]+ " " + text;
    }

    public static void getHundreds(int num)
    {
        text = hundreds.values()[num - 1]+ " " + text;
    }

    public static void getTens(int num)
    {
        text = tens.values()[num - 2]+ " " + text;
    }

    public static void getOnes(int num)
    {
        text = ones.values()[num - 1]+ " " + text;
    }
}

答案 1 :(得分:0)

没有“正确”的方法可以做到这一点,但我建议你将这些问题分开,因为这是一种很好的做法,因为你会进入更高阶的方法。您在这里尝试做两件事:将int转换为String,然后将生成的String格式化为写入文件的一系列行。将这些功能中的每一个放入单独的方法中:一个将int转换为它们的String表示(但最终实现它),另一个执行所有文件编写工作并在流程中调用int转换方法。 / p>

我不同意@ arshajii的声明,也许你应该只写三个println()语句,它们会复制功能(printf()语句的格式会被复制),同时混合关注点。我可能会在我在现实世界中编写的一些代码中做到这一点(取决于具体情况),但这并不是我在编程课程的介绍中接受考试的方式,而不是我建议的一般思维方式。学生只是学习良好的发展实践。

就我所知道的实际问题而言(如何将整数转换为相应的String值),因为你有一组简短明确的值,你可以使用{{3 }} ...