在进行模数学运算时出错

时间:2015-09-28 13:58:26

标签: java oop jvm

我向你们致以诚挚的问候。我需要有人帮助查看这个printChar(char ch1,char ch2,int num)方法。 它的目的是采用两个字符参数,一个起点ch1和一个终点ch2。从ch1到ch2以升序打印控制台上的字符,直到达到点(num),中断,然后在下一行继续打印。

我相信,这里面临的错误类型是合乎逻辑的。请帮忙。这是代码。

public static void printChars(char ch1, char ch2, int num) {
    while (ch1 < ch2) {
        System.out.print(ch1++ + " ");
        if ((ch1 % num) == 4) {
            System.out.println("");
        }
    }
    System.out.print(ch2);
}

public static void main(String[] args) {
    printChars('A', 'H', 4);
    }
}

这是显示的输出

run:
A B C 
D E F G 
HBUILD SUCCESSFUL (total time: 0 seconds)

intead of

A B C D
E F G H

3 个答案:

答案 0 :(得分:1)

您应该看一下模运算符(%)的工作原理。 n%n不会返回n而是0

您可能希望将if((ch1 % num)== 4)更改为if((ch1 % num)== 0)

编辑:现在我明白了你真正想要的东西;)你应该实现一个与ch1并行运行的计数器并检查计数器(if((counter % num)==0))!使用该计数器,您可以在正确的位置打印换行符。

答案 1 :(得分:0)

你应该添加一些东西来计算行中的字符

public static void printChars(char ch1, char ch2, int num)
{
   int counter = 0;

   while(ch1 <= ch2)
   {
       System.out.print(ch1++ + " ");  
       counter++;

       if( counter%num == 0 )
       {
           System.out.println("");
       } 
    }
}

你也可以使用 ch1&lt; = ch2 而不是在结尾打印ch2

答案 2 :(得分:-1)

你的代码几乎是正确的,我做了一些小改动,看起来像你想要的那样:

public static void printChars(char ch1, char ch2, int num) {
    int index = 1;
    while (ch1 < ch2) {
        System.out.print(ch1 + " ");
        if ((index % num) == 0) {
            System.out.println("");
        }
        index++;
        ch1++;
    }
    System.out.print(ch2);

}

请告诉我这是否是你想要的......

<强> 实施例

printChars(&#39; A&#39;,&#39; W&#39;,4);

A B C D 
E F G H 
I J K L 
M N O P 
Q R S T 
U V W

您所拥有的探索是必须与 0 进行比较,因为它会返回模块 ch1 num