簡體   English   中英

如何使用Java中的math.random從文本文件中打印一行特定的文本?

[英]How do you print a specific line of text from a text file using math.random in Java?

嗨,我是Java的新手。 我需要編寫一個程序,讓精靈告訴別人他們的命運。 對於此程序,我從基於隨機數(來自math.random)的程序中接受輸入,並從返回的任意數字(1-100)中返回文本行。 有人可以幫助我解決這個問題嗎?(最好不要使用我不理解的專業課程)。 謝謝!

public void askFortune() 
{   
    Scanner input = new Scanner("fortunes.txt");
    double number = Math.random();
    int num = (int) number * 100;
    num += 1;
}

您可以嘗試迭代掃描儀,直到到達隨機行或到達掃描儀的末端為止:

public void askFortune() {   
    Scanner input = new Scanner("fortunes.txt");
    double number = Math.random();
    int num = (int) number * 100;
    num += 1;
    int counter = 0;
    String line = "";

    while (counter < number) {
        if (!input.hasNextLine()) {
            break;
        }
        line = input.nextLine();
        ++counter;
    }

    if (counter == number) {
         System.out.println("Found line:\n" + line);
    }
    else {
        System.out.println("Input file does not have enough lines"); 
    }
}

這是Java IO的傳統方式。

public void askFortune() {   
    BufferedReader input = null;

    double number = Math.random();
    int num = (int) (number * 100);
    num += 1;
    int lineCount = 0;
    String line = "";

    try {
        String foundLine = null;
        input = new BufferedReader( 
           new InputStreamReader(new FileInputStream("fortunes.txt")));
        while((line = input.readLine()) != null)
        {

            if(num == lineCount)
            {
                foundLine = line;

                break;
            }

            lineCount++;
        }

        if(foundLine != null)
            System.out.printf("Found line[%d]:%s\n", num, foundLine);
        else
            System.out.println("Wrong line number" + number + ":" + num); 

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

您必須檢查以下行,

int num = (int) number * 100;

這可能會導致操作數順序問題,如果您期望1到100作為行號的范圍,則可以更改它。

您可以使用

int num = (int) (number * 100);

要么

int num = (int) (Math.random() * 100) + 1;

代替

double number = Math.random();
int num = (int) (number * 100);
num += 1;

希望對您有幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM