我无法正常使用此txt.file打印1-100个整数

时间:2014-09-23 02:40:02

标签: java

我试图让这段代码在第一行打印1-10,然后在第二行打印11-20,在第三行打印21-30等等。

但现在代码在第一行打印1-10,第二行打印10-20,第三行打印20-30等。

基本上我已经被困在这里并且一直在做试验和错误来尝试修复它但是没有工作。

import java.util.Scanner;
import java.io.*;

public class P4C {
    public static void main ( String [] args )throws IOException {
        PrintWriter writer = new PrintWriter ( new File ( "Write100Project" )); //creates a       PrintWriter object to allow us to create and write to a file.
        int integer = 1;
        int margin = 1;
        int counter = 1;
        while ( margin <=100){
            if ( margin == 10*counter ){
               System.out.println ( integer + " ");
               counter+=1;
               integer = integer+1;
            }
            System.out.print ( integer + " " );
            integer+=1;
            margin++;
        }   
    }
}

4 个答案:

答案 0 :(得分:2)

当你遍历一个数组并希望以不同的方式处理某些元素时,基本上有两种方法:

  1. 为特殊元素做点什么。除了特殊元素之外,为做其他事情。在代码中,这意味着在while循环中使用if-else。
  2. 为每个元素执行通用操作,并为特殊元素执行额外的
  3. 选择哪种方法取决于重叠量。如果特殊元素的代码与其他元素的代码非常不同,请使用1.如果代码几乎相同,请使用2.

    你似乎混合使用这些,这就是为什么每10个打印两次的原因。将您的问题翻译成两种方法:

    1. 为每10的打印数量和新行。打印每个其他元素的数字。 while主体的代码片段(使用%,我希望你得到的是其他答案的含义):
    2. if (margin % 10 == 0) {
          System.out.println(margin + " ");
          margin++;
      } else {
          System.out.print(margin + " ");
          margin++;
      }
      
      1. 打印每个元素的数字。另外,为10的每个倍数打印一个新行(请注意我需要重新排序代码;您首先要打印10的倍数,然后是新行,然后增加保证金):
      2. System.out.print(margin + " ");
        if(margin % 10 == 0) {
            System.out.println();
        }
        margin++;
        

        此外,请注意我不再需要integercounter

答案 1 :(得分:0)

对于这种类型的东西,模数%显示剩余部分。在这里你需要每隔10行换一个新行,所以@MadProgrammer的(margin % 10 == 0)说的是除以10之后的余数是0

你可以用一个变量来完成所有这一切,而不是使用三个变量,这样可以使它更简单一点。逻辑是当你的数字小于100时,添加一个然后打印出来。如果它是行中的第10个数字,则打印一个新行。

import java.util.Scanner;
import java.io.*;

public class P4C {
    public static void main ( String [] args )throws IOException {
        PrintWriter writer = new PrintWriter ( new File ( "Write100Project" )); //creates a       PrintWriter object to allow us to create and write to a file.
        int integer = 0;
        while ( integer <100){
            if ( integer % 10 == 0 ){ //If integer is divisible by 10
               System.out.println (); //Time to go onto a new line
            }
            integer++;
            System.out.print ( integer + " " );
        }   
    }
}

答案 2 :(得分:0)

&#39;%&#39;是模数。 模数基本上返回余数;例如:

5%4 = 1;

3%2 = 1;

8%3 = 2;

10%10 = 0;

i ++与说法相同;

i = i + 1;

i + = 1;

import java.util.Scanner;
import java.io.*;

public class IntegerCounting {
public static void main ( String [] args )throws IOException {
PrintWriter writer = new PrintWriter ( new File ( "Write100Project" ));
int i = 0;  
        while(i < 100){
            if(i % 10 == 0 && i != 0){
                System.out.println(i++ + "");
            }
                System.out.print(i++ + " ");
            }
    }
}

答案 3 :(得分:-1)

这可能会有所帮助......

int integer = 1;
    while(integer<=100){
        System.out.print(" "+integer++);
        if(integer%10==0){
            System.out.println(" "+integer++);
            //System.out.println();
        }
    }