我尝试创建一个从用户接收输入字符的程序,并将小写字符转换为大写字母,反之亦然。每次进行转换时,更改次数都会增加,并且何时进行转换。'输入后,程序停止要求输入。这就是我到目前为止所做的事情:
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;每次输入后重复多次。任何解决这个问题的方法?我犯了什么错误?
提前致谢:)
答案 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);
}