Java大写,小写问题

时间:2014-05-19 16:58:06

标签: java

我尝试创建一个从用户接收输入字符的程序,并将小写字符转换为大写字母,反之亦然。每次进行转换时,更改次数都会增加,并且何时进行转换。'输入后,程序停止要求输入。这就是我到目前为止所做的事情:

import java.io.*;
class Example5
{
   public static void main(String args[]) throws IOException
   {
      InputStreamReader inStream = new InputStreamReader (System.in);
      BufferedReader stdin = new BufferedReader (inStream);
      char input = '\0';
      int counter = 0;

      while(!(input == '.'))
      {
         System.out.print("Input a character. Input will continue until you enter a period : ");
         input = (char)stdin.read();

         if((int)input > 96 & (int)input < 123)
         {
            char upperInput = Character.toUpperCase(input);
            System.out.println(upperInput);
            counter++;
         }
         else if((int)input > 64 & (int)input < 91)
         {
            char lowerInput = Character.toLowerCase(input);
            System.out.println(lowerInput);
            counter++;
         } 
      }

      System.out.println("The number of changes are : " + counter);
   }
}

转换和计数器工作正常,但由于某种原因,在每次输入后,行&#34;输入一个字符。输入将继续,直到您输入一段时间:&#34;每次输入后重复多次。任何解决这个问题的方法?我犯了什么错误?

提前致谢:)

3 个答案:

答案 0 :(得分:3)

您的print语句在while循环中。这会导致程序在每次循环开始时打印。

循环不等待更多输入,无论是否有新输入,它都会循环。

要修复它,如果您只希望在程序执行开始时打印一次该语句,或者更改循环条件以便仅在给出新输入时重新执行,则将print语句从循环中取出

我希望我一直很清楚,乐于助人。

答案 1 :(得分:0)

将其置于while循环

之外

因为它在循环中,每次读取字符时,都会打印出来。

System.out.print("Input a character. Input will continue until you enter a period : ");

      while(!(input == '.'))

答案 2 :(得分:0)

您可以执行以下操作:

InputStreamReader inStream = new InputStreamReader (System.in);
      BufferedReader stdin = new BufferedReader (inStream);
      char input = '\0';
      int counter = 0;
      System.out.print("Input a character. Input will continue until you enter a period : ");
      do
      {

         input = (char)stdin.read();
         System.out.print("Input a character. Input will continue until you enter a period : ");
         if((int)input > 96 & (int)input < 123)
         {
            char upperInput = Character.toUpperCase(input);
            System.out.println(upperInput);
            counter++;
         }
         else if((int)input > 64 & (int)input < 91)
         {
            char lowerInput = Character.toLowerCase(input);
            System.out.println(lowerInput);
            counter++;
         } 
      }while(!(input == '.'));

      System.out.println("The number of changes are : " + counter);
   }