问题描述
如何在使用 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="content">
<ul id="sidebar" class="menu-expanded">
<li id="li"><a href="#">This is link</a></li>
<li><a href="#">This is link</a></li>
<li><a href="#">This is link</a></li>
<li><a href="#">This is link</a></li>
<li><a href="#">This is link</a></li>
</ul>
<div class="main">
Lorem ipsum dolor sit amet,consectetur adipisicing elit. Natus ex,voluptatum error itaque provident totam ratione,quaerat reprehenderit accusantium omnis veniam voluptatibus fugiat ducimus,eos,consequuntur perferendis fugit adipisci dolores.
</div>
</div>
<button id="menu-btn">MENU</button>
迭代范围时调用函数来打印值?
IntStream
解决方法
也许这就是你想要的。让方法返回字符串。然后使用 IntStream
遍历数字。然后将这些传递给将 int
映射到 String
的返回值的方法。然后您只需打印该值。
public class FizzBuzzStream {
public static void main(String[] args) {
int n = 20;
IntStream.range(1,n).mapToObj(FizzBuzzStream::eval)
.forEach(System.out::println);
}
private static String eval(int n) {
boolean isDivisibleBy3 = n % 3 == 0;
boolean isDivisibleBy5 = n % 5 == 0;
if (isDivisibleBy3 && isDivisibleBy5) {
return "FizzBuzz";
}
if (isDivisibleBy3) {
return "Fizz";
}
if (isDivisibleBy5) {
return "Buzz";
}
return Integer.toString(n);
}
}
印刷品
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
,
map()
操作需要一个非空函数作为其输入,因此该函数可以应用于流中的每个元素并替换它们。
请改用 forEach()
。它可以对您的元素应用 void 函数。
也不要在 lambda 表达式中使用 n
。它已经声明并且不能被覆盖。
public static void fizzBuzz(int n) {
IntStream.range(1,n).forEach(x -> print(x));
}
,
map
用于将一个值转换为另一个值。由于 print
不返回任何内容(其返回类型为 void
),因此您不能使用 map
。不过,您可以改用 forEach
:
IntStream.range(1,n).forEach(n -> print(n));
,
正如其他人所指出的,您当前的方法不适用于 map
,因为您的函数是 void
。不过,您可以将 int
映射到 String
。该方法可能看起来像,
private static String mapFizzBuzz(int n) {
boolean isDivisibleBy3 = n % 3 == 0;
boolean isDivisibleBy5 = n % 5 == 0;
if (isDivisibleBy3 && isDivisibleBy5) {
return "FizzBuzz";
} else if (isDivisibleBy3) {
return "Fizz";
} else if (isDivisibleBy5) {
return "Buzz";
}
return Integer.toString(n);
}
如果您进一步打印 forEach
,那么您当前的方法将起作用。喜欢,
IntStream.range(1,n).mapToObj(x -> mapFizzBuzz(x)).forEach(System.out::println);