从传递给方法的扫描仪字符串中提取数据

时间:2014-12-03 03:01:17

标签: java java.util.scanner

我需要将扫描仪作为参数传递给方法,并让方法根据扫描仪传递的内容打印。

所以,如果通过的扫描仪包含“6只狐狸3只蜜蜂2 25 8只鸭子” 该方法将打印出来

foxfoxfoxfoxfoxfox 

beesbeesbees  
2525  
ducksducksducksducksducksducksducksducks  

编写方法没问题。我只是对使用扫描仪如何做到这一点感到困惑。

5 个答案:

答案 0 :(得分:2)

好吧,Scanner用于从文件或标准输入(System.in)中读取内容。传递 it 除非你想要封装功能和职责,否则不会给你带来很多好处。

如果我们从解决问题的立场考虑这个问题,我们真正想要得到什么?

  • 我们有一个首先包含数字和字符串的字符串,第二个字符串可以包含数字。

  • 所有这些符号都以空格分隔。

  • 一切都包含在一条线上;我们不必担心搬到下一行。

完全取决于您如何处理此问题,但有几条建议如下:

  • 由于您知道令牌的准确顺序,因此您可以多次拨打Scanner.next()Scanner.nextInt()

    while(scanner.hasNext()) {
        System.out.println(readFromScanner(scanner));
    }
    scanner.close(); // DO NOT DO THIS if you are using System.in!
    
    public static String readFromScanner(Scanner scanner) {
        StringBuilder result = new StringBuilder();
        int times = scanner.nextInt();
        String phrase = scanner.next();
        for(int i = 0; i < times; i++) {
            result.append(phrase);
        }
        return result.toString();
    }
    
  • 您还可以使用nextLine()一次性阅读整行,然后使用String.split()解析它,它会在每个偶数索引处为您提供数字(0,2,4等) ,以及每个奇数索引处的字符串(1,3,5等)。

答案 1 :(得分:1)

您可以使用Scannernext()等方法来阅读nextInt()。您可以阅读完整的Scanner javadoc here

答案 2 :(得分:1)

试试这个。有两种阅读方式。

1)包装在BufferedReader

中的InputStreamReader

2)JDK1.5中的扫描仪类

参考这篇文章。这将解决您的问题。

http://www.mkyong.com/java/how-to-read-input-from-console-java/

答案 3 :(得分:0)

您可以通过以下方式传递参数:

输入接受

  System.out.println("Input here: " );
  String input = scan.next();

  // This how you gonna pass the parameter
  inputedByScanner(input);

您的方法接受它并打印输入值。

public void print inputedByScanner(String input){
   System.out.println(input);
}

答案 4 :(得分:0)

public class Homework {

    public static void main(String[] args) {
        System.out.println("Enter something:");
        doStupidHomework(new Scanner(System.in));
    }

    private static void doStupidHomework(Scanner scanner) {
        int i = 0, x = 0;
        for (String next = scanner.next(); next != null; next = scanner.next(), i++) {
            if (i % 2 == 0) {
                x = Integer.parseInt(next);
                continue;
            }
            for (int j = 0; j < x; j++) {
                System.out.print(next);
            }
            System.out.println();
        }
    }

}

输出:

Enter something:
6 fox 3 bees 2 25 8 ducks
foxfoxfoxfoxfoxfox
beesbeesbees
2525
ducksducksducksducksducksducksducksducks