Java 我如何告诉编译器没有更多的输入

Java 我如何告诉编译器没有更多的输入,java,cygwin,Java,Cygwin,我的朋友向我展示了基本java是如何工作的,但是他没有向我展示代码是如何工作的,我想知道我如何告诉任何编译器没有更多的输入?因为它只是让我永远保持键入,我确信代码是正确的,只是当我编译代码时,它只留下空间,我可以继续按enter键输入更多字符,但我不知道如何停止 import java.io.*; class FileStats { /** * Implements the entire process (reading and reporting). *

我的朋友向我展示了基本java是如何工作的,但是他没有向我展示代码是如何工作的,我想知道我如何告诉任何编译器没有更多的输入?因为它只是让我永远保持键入,我确信代码是正确的,只是当我编译代码时,它只留下空间,我可以继续按enter键输入更多字符,但我不知道如何停止

import java.io.*;

class FileStats {

    /**
     * Implements the entire process (reading and reporting).
     *
     * @param args is not used.
     */
    public static void main(String args[]) throws IOException {
        // Variables to hold the various character class counts.
        int lowerCase = 0;
        int upperCase = 0;
        int whiteSpace = 0;
        int otherChars = 0;
        int totalChars = 0;

        // Read the (standard) input
        while (true) {
            // Quit if there's no more input.
            int input = System.in.read();
            if (input < 0) break;

            // Cast the input to a character.
            char c = (char) input;

            // Tally up the statistics.

            totalChars++;

            if ('a' <= c && c <= 'z') {
                lowerCase++;
            } else if ('A' <= c && c <= 'Z') {
                upperCase++;
            } else if (' ' == c || '\t' == c || '\n' == c) {
                whiteSpace++;
            } else {
                otherChars++;
            }
        }

        // Report the statistics
        System.out.println(totalChars + " Total Characters");
        System.out.println(lowerCase + " Lower-Case Characters");
        System.out.println(upperCase + " Upper-Case Characters");
        System.out.println(whiteSpace + " White-Space Characters");
        System.out.println(otherChars + " Other Characters");
    }
}
import java.io.*;
类文件状态{
/**
*执行整个过程(读取和报告)。
*
*未使用@param args。
*/
公共静态void main(字符串args[])引发IOException{
//用于保存各种字符类计数的变量。
int小写=0;
int大写=0;
整数空格=0;
int-otherChars=0;
int totalChars=0;
//读取(标准)输入
while(true){
//如果没有更多输入,请退出。
int input=System.in.read();
如果(输入<0)中断;
//将输入转换为字符。
字符c=(字符)输入;
//统计数字。
totalChars++;
如果('a'您有一个
,而(true)
,那么,是的,程序将始终循环从键盘请求数字

我想你需要另一个
,否则如果循环中的
捕捉到一个“特殊”字符,这意味着循环必须结束,你可以从那里调用
break

例如

您有一个
while(true)
,因此,是的,程序将始终循环从键盘请求数字

我想你需要另一个
,否则如果循环中的
捕捉到一个“特殊”字符,这意味着循环必须结束,你可以从那里调用
break

例如


对于java新手来说,最好从Scanner开始

尝试:

import java.io.*;
导入java.util.Scanner;
类文件状态{
/**
*执行整个过程(读取和报告)。
*
*未使用@param args。
*/
公共静态void main(字符串args[])引发IOException{
//用于保存各种字符类计数的变量。
int小写=0;
int大写=0;
整数空格=0;
int-otherChars=0;
int totalChars=0;
//读取(标准)输入
扫描仪=新的扫描仪(System.in);
字符串行=scanner.nextLine();
对于(int i=0;i对于java中的新手来说,最好从Scanner开始

尝试:

import java.io.*;
导入java.util.Scanner;
类文件状态{
/**
*执行整个过程(读取和报告)。
*
*未使用@param args。
*/
公共静态void main(字符串args[])引发IOException{
//用于保存各种字符类计数的变量。
int小写=0;
int大写=0;
整数空格=0;
int-otherChars=0;
int totalChars=0;
//读取(标准)输入
扫描仪=新的扫描仪(System.in);
字符串行=scanner.nextLine();
对于(int i=0;i
int input = System.in.read();
再次查看您的条件语句:

if (input < 0) break;
然后,如果您键入“p”,它将跳出循环并根据需要显示结果

或者,您可以使用java.util.Scanner中的扫描仪

可以使用read()函数读取下一个输入字符串。java String类有一个名为charAt(int index)的方法,该方法返回字符串中特定索引处的字符。可以使用此方法获取输入的第一个字符:

char c = reader.next().charAt(0);
如果你把这些放在一起:

while (true) {
    char c = reader.next().charAt(0);
if (c == '.') break;
这样,您就不必担心将int强制转换为char。希望这会有所帮助。

InputStream read()方法将一个字节作为int返回,范围为0到255

int input = System.in.read();
再次查看您的条件语句:

if (input < 0) break;
然后,如果您键入“p”,它将跳出循环并根据需要显示结果

或者,您可以使用java.util.Scanner中的扫描仪

可以使用read()函数读取下一个输入字符串。java String类有一个名为charAt(int index)的方法,该方法返回字符串中特定索引处的字符。可以使用此方法获取输入的第一个字符:

char c = reader.next().charAt(0);
如果你把这些放在一起:

while (true) {
    char c = reader.next().charAt(0);
if (c == '.') break;

这样,您就不必担心将int转换为char。希望这会有所帮助。

有两个单独的步骤:1)使用编辑器编辑代码2)用编译器编译代码。不清楚你在问什么。很抱歉,我知道这个问题很让人困惑,但只是当我在诸如cygwin nothing hapens之类的编译器中编译代码时,例如,我会键入“Javac FileStats.java”编译它,然后使用java FileStats调用类,然后我输入多个数字,然后现在我试图完成代码并打印统计数据,但是考虑到你有一个
while(true),我不知道如何做好
语句在那里它永远不会停止…你需要摆脱它,并可能想出一个更好的循环条件,比如…
while(readInNumber!=-1)继续…
按ctrl-d发送EOF。仅供参考。此问题与编译器无关。编译器用于将代码转换为程序。您要问的是如何使程序完成运行。有两个单独的步骤:1)用编辑器编辑代码2)用编译器编译代码。不清楚你在问什么。对不起,我不知道