我需要将扫描仪作为参数传递给方法,并让方法根据扫描仪传递的内容打印。
所以,如果通过的扫描仪包含“6只狐狸3只蜜蜂2 25 8只鸭子” 该方法将打印出来
foxfoxfoxfoxfoxfox
beesbeesbees
2525
ducksducksducksducksducksducksducksducks
编写方法没问题。我只是对使用扫描仪如何做到这一点感到困惑。
答案 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)
您可以使用Scanner
和next()
等方法来阅读nextInt()
。您可以阅读完整的Scanner
javadoc here。
答案 2 :(得分:1)
试试这个。有两种阅读方式。
1)包装在BufferedReader
中的InputStreamReader2)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