for循环中的语句只执行一次 import java.util.Scanner; 公开课考试{ 公共静态void main(字符串参数[]){ 字符串名称=”,n; 双r,h,s,m=0; INTC; 扫描器i=新扫描器(System.in); 员工e[]=新员工[5]; 对于(int j=0;j

for循环中的语句只执行一次 import java.util.Scanner; 公开课考试{ 公共静态void main(字符串参数[]){ 字符串名称=”,n; 双r,h,s,m=0; INTC; 扫描器i=新扫描器(System.in); 员工e[]=新员工[5]; 对于(int j=0;j,java,loops,for-loop,java.util.scanner,Java,Loops,For Loop,Java.util.scanner,因此,你应该在每个案例之后添加一个中断 我建议使用println而不是printf,它将允许您使用更少的“\n”,并使您的代码更有条理 你使用java,就像C++一样,我认为做起来容易多了。 System.out.println(“请输入员工姓名”+(j+1)) 如果没有其他的源代码,帮助您是有点困难的。问题是,在第二个循环中n=i.nextLine(),因为扫描仪s缓冲区中仍有内容行,您需要清除扫描仪 你可以添加一些类似于 import java.util.Scanner; public c

因此,你应该在每个案例之后添加一个中断

我建议使用println而不是printf,它将允许您使用更少的“\n”,并使您的代码更有条理

<>你使用java,就像C++一样,我认为做起来容易多了。 System.out.println(“请输入员工姓名”+(j+1))


如果没有其他的源代码,帮助您是有点困难的。

问题是,在第二个循环中
n=i.nextLine(),因为
扫描仪
s缓冲区中仍有内容行,您需要清除
扫描仪

你可以添加一些类似于

import java.util.Scanner;

public class Test {

    public static void main(String args[]) {
        String name = " ", n;
        double r, h, s, m = 0;
        int c;

        Scanner i = new Scanner(System.in);
        Employee e[] = new Employee[5];

        for (int j = 0; j < 5; j++) {
            System.out.printf("\nPlease enter the name of Employee %d ", j + 1);
            /* THE PROBLEM LIES IN THE ABOVE STATEMENT IT IS EXECUTED ONLY ONCE WHILE IT'S MEANT TO BE EXECUTED 5 TIMES */
            n = i.nextLine();
            System.out.print("\t1.PartTime\n\t2.FullTime\n");
            c = i.nextInt();

            switch (c) {
                case 1:
                    System.out.print("hours worked ");
                    h = i.nextDouble();
                    System.out.print("rate per hour ");
                    r = i.nextDouble();
                    e[j] = new Part(n, h, r);
                    break;
                case 2:
                    System.out.print("Salary ");
                    s = i.nextDouble();
                    e[j] = new Full(n, s);
                    break;
                default:
                    System.out.print("\n***INVALID*** ");
                    j--;
            }
        }
    }
}
例如,到循环的
末尾

if (i.hasNextLine()) {
    i.nextLine();
}
for(int j=0;j<5;j++){
System.out.printf(“\n请输入员工%d的姓名”,j+1);
/*问题在于上面的语句只执行了一次,而应该执行5次*/
n=i.nextLine();
System.out.print(“\t1.兼职\n\t2.全职\n”);
c=i.nextInt();
开关(c){
案例1:
系统打印(“工作时间”);
h=i.nextDouble();
系统输出打印(“每小时费率”);
r=i.nextDouble();
e[j]=新零件(n,h,r);
打破
案例2:
系统打印(“工资”);
s=i.nextDouble();
e[j]=新的完整(n,s);
打破
违约:
系统输出打印(“\n***无效***”);
j--;
}
if(i.hasNextLine()){
i、 nextLine();
}
}

这将确保
扫描器
没有以前输入的其他内容

只是好奇:您希望通过编写所有大写的句子来实现什么?
系统。默认情况下,out
在换行符上刷新。你的很多指纹可能都没有冲洗。@Braj中断是因为开关状态,它按预期工作。分享实际代码。Swing是如何涉及的?
for (int j = 0; j < 5; j++) {
    System.out.printf("\nPlease enter the name of Employee %d ", j + 1);
    /* THE PROBLEM LIES IN THE ABOVE STATEMENT IT IS EXECUTED ONLY ONCE WHILE IT'S MEANT TO BE EXECUTED 5 TIMES */
    n = i.nextLine();
    System.out.print("\t1.PartTime\n\t2.FullTime\n");
    c = i.nextInt();

    switch (c) {
        case 1:
            System.out.print("hours worked ");
            h = i.nextDouble();
            System.out.print("rate per hour ");
            r = i.nextDouble();
            e[j] = new Part(n, h, r);
            break;
        case 2:
            System.out.print("Salary ");
            s = i.nextDouble();
            e[j] = new Full(n, s);
            break;
        default:
            System.out.print("\n***INVALID*** ");
            j--;
    }
    if (i.hasNextLine()) {
        i.nextLine();
    }
}