打印出奇数0-100,不包括X,Y,Z

时间:2013-12-01 17:08:04

标签: java if-statement

这显然是一个“家庭作业风格”的任务,但我有把握如何排除某些数字的问题。我理解如何写出0-100的奇数,但是我无法理解我发现或试图找到的关于如何排除预先选择的数字的任何答案。

基本上,我想要发生的是以下内容: 该程序从1-100写入所有奇数。让我们说我不希望显示数字5,9或11,但我希望我的程序继续,我该如何实现呢?

我有两组不同的代码(我不知道哪种代码在这种情况下更容易使用,所以我将它们都包括在内):

for (int i=0; i<100; i++)

            if (i % 2 !=0)
        System.out.println(i)

for (int i=1; i<100; i=i+2)
System.out.println(i)

4 个答案:

答案 0 :(得分:2)

(使用JDK 7)

Set<Integer> exclusions = new HashSet<>(Arrays.asList(5, 9, 11)); //syntactic sugar from JDK 7
for (int i=0; i<100; i++) {
    if(i % 2 == 0 || exclusions.contains(i))  // if pair OR in exclusions list, isn't interesting
       continue; // continue allows to say: "isn't interesting, take me to the next value
    System.out.println(i); // Oh yeah, this one is interesting! It's an odd! print it!
}

(使用JDK 5/6)

Set<Integer> exclusions = new HashSet<Integer>(Arrays.asList(5, 9, 11));
for (int i=0; i<100; i++) {
    if(i % 2 == 0 || exclusions.contains(i))
       continue;
    System.out.println(i);
}

当然,还有其他方法可以完成任务,但我喜欢这个。

此外,使用Arrays.asList[initialize the设置inline][1]的好提示。

它取代了传统的样板代码:

Set<Integer> exclusions = new HashSet<Integer>();
   exclusions.add(5);
   exclusions.add(9);
   exclusions.add(11);

答案 1 :(得分:1)

for (int i=0; i<100; i++) {
    if ( (i % 2 !=0) && i!=5 && i!=9 && i!=11) {
        System.out.println(i)
    }
}

在没有括号的情况下编写它是不好的做法,因为稍后添加更多行时很容易出错。此外,您可能正在编写Java而不是JavaScript。

答案 2 :(得分:0)

如果要使用常数来排除,只需使用ifs

即可
for (int i=1; i<100; i=i+2) {
  if ( i != 1 && i !=5 && i != 10 ) {
    System.out.println(i);
  }
}

但是如果你有一些数字列表,从输入或其他东西读取,ifs将无法做到。你需要的是要排除的数字集合,Java有很多set的实现,这些实现也有效地检查一些set包含给定的元素。所以你会做这样的事情:

// you can use hashset
Set<Integer> setOfElementsToExclude = new HashSet<Integer>();
// add as many elements as you want from input or manually
setOfElementsToExclude.add(1);
setOfElementsToExclude.add(5);
setOfElementsToExclude.add(10);
for (int i=1; i<100; i=i+2) {
  if ( !setOfElementsToExclude.contains(i) ) {
    // so print only the numbers not present in exclusion set
    System.out.println(i);
  }
}

如果您需要,可以在此处阅读有关设置的内容:http://docs.oracle.com/javase/7/docs/api/java/util/Set.html

答案 3 :(得分:0)

StringBuilder sb = new StringBuilder();

Set<Integer> set = new HashSet<>();
set.add(5);
set.add(9);
set.add(11);

for(int i = 0 ; i <= 100 ; i++) {
    if(!set.contains(i) && i%2 != 0) {
          sb.append(i).append(" ");
    }
}
System.out.println(sb.toString());