整个循环完成后,如何获取系统输出值?

时间:2020-07-18 00:55:25

标签: java

这是我在这个社区中的第一个问题,因为您可以看到我是一个初学者,而且我对Java和编码的了解很少。但是,在我的初学者实践中,我为自己提出了一个项目挑战。如图所示,循环开始,并打印出通过扫描仪指定的编号。我尝试使用此代码的问题在于,一旦按Enter键,它就会为我提供输出值。我想做的是替代此代码,但我希望在整个循环完成后给出输出值。

figure

所以,基本上,我想要的是使程序在循环结束后将输入值一起提供给我,而不是在输入每个数字后分别给它们提供输入值。

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        calc();    }

    public static int calc (){
        Scanner scan = new Scanner(System.in);
        int count = 1;
        int pass = 0;
        int notpass = 0;
        System.out.println("how many subjects do you have? ");
        boolean check = scan.hasNextInt();
        int maxless = scan.nextInt();

        if (check){

            while(count <= maxless ){
                System.out.println("Enter grade number " + count);
                int number = scan.nextInt();
                System.out.println("grade number" + count + " is " + number);
                if (number >= 50){
                    pass++;
                }else{
                    notpass++;
                }
                count++;
            }

            System.out.println("number of passed subjects = " + pass);
            System.out.println("number of failed subjects = " + notpass);

        }else{
            System.out.println("invalid value!");
        } return pass;
    }

}


2 个答案:

答案 0 :(得分:0)

方法1:

您可以使用Collection类中的ArrayList并将结果存储在那里,在循环完成后,只需在循环中打印阵列即可。

示例:

//Import class
import java.util.ArrayList;

//Instantiate object
ArrayList<String> output = new ArayList();

while(condition){
   output.add("Your data");
}

for(i = 0; i < condition; i++){
    System.out.println(output.get(i));
}

方法2:

使用StringBuilder类并将输出附加到字符串,循环完成后,从stringbuilder对象中打印字符串。

示例:

//import classes
import java.util.*;

//instantiate object
StringBuilder string = new StringBuilder();

while(condition){
    string.append("Your string/n");
}

System.out.print(string.toString());

方法3 :(如萨拉提到的那样)

使用数组存储结果百分比或其他任何值,然后在循环中格式化它。 (如果您要为同一个学生存储多个值,则不可行)

示例:

int studentMarks[] = new int[array_size];

int i = 0;
while(condition){
    studentMarks[i++] = marks;
}

for(int j = 0; j < i; j++)
    System.out.println("Marks : " + studentMarks[j]);

答案 1 :(得分:0)

我也是这个社区的新手,但是我已经编码了一段时间了。

我认为您要创建一个整数数组。

会是这样的:

import java.util.Scanner;

public class Application {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int maxless = 5;
        int[] numbers = new int[maxless];

        int count = 0, pass = 0, notPass = 0;

        while(count < maxless){
            System.out.println("Enter grade number " + (count + 1) + ":");
            numbers[count] = scan.nextInt();
            if(numbers[count] >= 50){
                pass++;
            }
            else{
                notPass++;
            }
            count++;
        }

        for(int i=0; i<maxless; i++){
            System.out.println("Grade number " + (i + 1) + " is " + numbers[i]);
        }

    }

}

输出如下:

Enter grade number 1:
90
Enter grade number 2:
76
Enter grade number 3:
54
Enter grade number 4:
67
Enter grade number 5:
43
Grade number 1 is 90
Grade number 2 is 76
Grade number 3 is 54
Grade number 4 is 67
Grade number 5 is 43

在处理数组时,只需记住索引从0开始。您可以在此处了解有关数组的更多信息:http://www.dmc.fmph.uniba.sk/public_html/doc/Java/ch5.htm#:~:text=An%20array%20is%20a%20collection,types%20in%20a%20single%20array

提示:如果将问题代码以文本而非图像的形式发布在问题上会更容易获得帮助,因此我们可以复制并尝试。