使用ctrl+结束程序;Z import java.util.Scanner; 公共班级平均成绩 { 公共静态void main(字符串参数[]) { 字符串名称[]=新字符串[50]; 整数分数[]=新整数[50]; 整数项=0; 扫描仪输入=新扫描仪(系统输入); //System.out.println(“输入条目数”); //int entry=in.nextInt(); System.out.println(“输入姓名,后跟学生分数:”); 对于(int i=0;i

使用ctrl+结束程序;Z import java.util.Scanner; 公共班级平均成绩 { 公共静态void main(字符串参数[]) { 字符串名称[]=新字符串[50]; 整数分数[]=新整数[50]; 整数项=0; 扫描仪输入=新扫描仪(系统输入); //System.out.println(“输入条目数”); //int entry=in.nextInt(); System.out.println(“输入姓名,后跟学生分数:”); 对于(int i=0;i,java,Java,我想按住ctrlkey键z,然后按enter键结束程序,但我该怎么做呢 如果您想知道该程序是否要编写一个程序,允许用户输入学生姓名,然后输入他们的考试成绩,并输出班级平均成绩、低于平均水平的学生姓名,以及以学生姓名显示的最高考试成绩,您可以在扫描仪中收听control-z字符: import java.util.Scanner; public class ClassAverage { public static void main(String args[]) {

我想按住ctrlkey键z,然后按enter键结束程序,但我该怎么做呢


如果您想知道该程序是否要编写一个程序,允许用户输入学生姓名,然后输入他们的考试成绩,并输出班级平均成绩、低于平均水平的学生姓名,以及以学生姓名显示的最高考试成绩,您可以在扫描仪中收听control-z字符:

    import java.util.Scanner;

public class ClassAverage
{
    public static void main(String args[])
    {
        String names[] = new String[50];
        int scores[] = new int[50];
        int entries = 0;

        Scanner in = new Scanner(System.in);
        //System.out.println("Enter number of entries");
        //int entry = in.nextInt();

        System.out.println("Enter the names followed by scores of students: ");

        for(int i = 0; i < 50; i++)
        {
            names[i] = in.next();
            scores[i] = in.nextInt();
            entries++;
        }
        Average avg = new Average();
        double average = avg.CalcAvg(scores,entries);

        System.out.println("The class average is: " + average);
        avg.belowAvg(scores,average,names,entries);
        avg.highestScore(scores,names, entries);
    }
}
class Average
{
    Average()
    {
        System.out.println("The averages: ");
    }
    double CalcAvg(int scores[], int entries)
    {
        double avg;
        int total = 0;

        for(int i = 0; i < entries; i++)
        {
           total += scores[i];
        }
           avg = total/entries;
        return avg;
    }

    void belowAvg(int scores[],double average,String names[], int entries)
    {
        for(int i = 0; i < entries; i++)
        {
            if(scores[i] < average)

                System.out.println(names[i] + "You're below class average");

        }
    }

    void highestScore(int scores[],String names[], int entries)
    {
        int max = scores[1];

        for(int i = 0; i < entries; i++)
        {
            if(scores[i]>=max)
                max=scores[i];
        }
        System.out.println("The maximum score is: " + max);
        System.out.println("The highest score acheivers list: ");

        for(int i = 0; i < entries; i++)
        {
            if(scores[i] == max)
                System.out.println(names[i]);
        }
    }
}

您可以在扫描仪中侦听control-z字符:

    import java.util.Scanner;

public class ClassAverage
{
    public static void main(String args[])
    {
        String names[] = new String[50];
        int scores[] = new int[50];
        int entries = 0;

        Scanner in = new Scanner(System.in);
        //System.out.println("Enter number of entries");
        //int entry = in.nextInt();

        System.out.println("Enter the names followed by scores of students: ");

        for(int i = 0; i < 50; i++)
        {
            names[i] = in.next();
            scores[i] = in.nextInt();
            entries++;
        }
        Average avg = new Average();
        double average = avg.CalcAvg(scores,entries);

        System.out.println("The class average is: " + average);
        avg.belowAvg(scores,average,names,entries);
        avg.highestScore(scores,names, entries);
    }
}
class Average
{
    Average()
    {
        System.out.println("The averages: ");
    }
    double CalcAvg(int scores[], int entries)
    {
        double avg;
        int total = 0;

        for(int i = 0; i < entries; i++)
        {
           total += scores[i];
        }
           avg = total/entries;
        return avg;
    }

    void belowAvg(int scores[],double average,String names[], int entries)
    {
        for(int i = 0; i < entries; i++)
        {
            if(scores[i] < average)

                System.out.println(names[i] + "You're below class average");

        }
    }

    void highestScore(int scores[],String names[], int entries)
    {
        int max = scores[1];

        for(int i = 0; i < entries; i++)
        {
            if(scores[i]>=max)
                max=scores[i];
        }
        System.out.println("The maximum score is: " + max);
        System.out.println("The highest score acheivers list: ");

        for(int i = 0; i < entries; i++)
        {
            if(scores[i] == max)
                System.out.println(names[i]);
        }
    }
}

Ctrl-Z是用于输入结束的DOS命令代码(与UNIX等效的是Ctrl-D)。所有命令行程序都应该支持这一点,因为它允许您将一个命令行程序的输出作为输入传递到另一个命令行程序。感谢你的老师

按下此组合键时,
Scanner.hasNextLine()
将返回false。下面是一个循环的示例,在Windows上按Ctrl-Z(或在Linux/Unix上按Ctrl-D)之前,循环一直读取行:


Ctrl-Z是用于输入结束的DOS命令代码(与UNIX等效的是Ctrl-D)。所有命令行程序都应该支持这一点,因为它允许您将一个命令行程序的输出作为输入传递到另一个命令行程序。感谢你的老师

按下此组合键时,
Scanner.hasNextLine()
将返回false。下面是一个循环的示例,在Windows上按Ctrl-Z(或在Linux/Unix上按Ctrl-D)之前,循环一直读取行:


为什么你要点击ctr+z然后进入退出该程序?老师希望如此为什么你要点击ctr+z然后进入退出该程序?老师希望如此如果caps lock打开了怎么办?如果使用外国键盘怎么办?为什么不使用
VK_Z
?根本不确定控制字符是否按原样传输到程序。例如,Unix shell上的C-C将向进程发送一个SIGTERM,它根本不会发送控制字符(C-z将发送SIGTSTP)@fge这很好,他无论如何都想停止程序,因此如果程序被此if语句或SIGSTP停止,根据问题描述,这无关紧要,因为他没有说他必须做任何清理。@aguibert即使在那时,我也非常怀疑C-z即使在Windows下也会将字符作为isIt发送,它应该是
KeyEvent.VK_C
。如果caps lock打开了怎么办?如果使用外国键盘怎么办?为什么不使用
VK_Z
?根本不确定控制字符是否按原样传输到程序。例如,Unix shell上的C-C将向进程发送一个SIGTERM,它根本不会发送控制字符(C-z将发送SIGTSTP)@fge这很好,他无论如何都想停止程序,因此如果程序被此if语句或SIGSTP停止,根据问题描述,这无关紧要,因为他没有说他必须做任何清理工作。@aguibert即使在那时,我也非常怀疑C-z在Windows下发送字符isIt应该是
KeyEvent.VK_C
。所以,基本上这意味着在Windows下read()将返回-1?knowSo很有趣,它基本上意味着在Windows下read()将返回-1?很想知道
while (in.hasNextLine()) {
    System.out.println("You wrote " + in.nextLine());
}