为了账号安全,请及时绑定邮箱和手机立即绑定

如何将用户输入用于 while 循环中的字符串数组?

如何将用户输入用于 while 循环中的字符串数组?

素胚勾勒不出你 2021-11-11 15:38:16
我正在尝试将来自学生姓名和分数问题的用户输入转换为数组。我还需要帮助来打印数组。while 循环使用 boolean loopNaming 作为其条件,并且每次循环发生时都会更新 i 。 public static void main(String [] args)    {        Scanner keyboard = new Scanner(System.in);        double score;        boolean loopNaming=true;        int i=0;        String[] name = new String[i];         while(loopNaming==true)            {                System.out.printf("Enter name of student or done to finish: ");                name[i] = keyboard.next();                if(name[i].equals("done"))                {                    loopNaming = false;                }                else                {                    System.out.println("Enter score: ");                    score = keyboard.nextDouble();                }                i=i+1;            }            System.out.println(name[i]);        }    }
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以简化程序的逻辑并编写如下内容,


public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);


    List<String> nameList = new ArrayList<String>();

    List<Double> scoreList = new ArrayList<Double>();


    while (true) {

        System.out.printf("Enter first name of student or done to finish: ");

        String fname = keyboard.next();

        if (fname.equals("done")) {

            break;

        }

        System.out.printf("Enter last name of student: ");

        String lname = keyboard.next();

        nameList.add(fname + " " + lname);

        System.out.println("Enter score: ");

        scoreList.add(keyboard.nextDouble());

    }

    keyboard.close();

    System.out.println("Names: " + nameList);

    System.out.println("scores: " + scoreList);

}


查看完整回答
反对 回复 2021-11-11
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

public static void main(String [] args)

    {

        Scanner keyboard = new Scanner(System.in);

        double score;


        boolean loopNaming=true;

        int i=0;

        ArrayList<String> name = new ArrayList<>();




        while(loopNaming==true)

        {

            System.out.printf("Enter name of student or done to finish: ");


            String input = keyboard.next();

            if(input.equals("done"))

            {

                loopNaming = false;

            }

            else

            {   name.add(input);

                System.out.println("Enter score: ");

                score = keyboard.nextDouble();

            }

            i=i+1; //no need to use


        }

        System.out.println(name);


    }

您应该使用 adynamic list因为您不能在 Java 中调整数组的大小。第二点当用户给出“完成”时,你不应该把它放在列表中,所以在插入之前检查它。


查看完整回答
反对 回复 2021-11-11
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您声明了大小为 0 的 String 数组。这就是您不能向其中添加元素的原因。


import java.util.Scanner;


public class NameArray {

 public static void main(String [] args){

     Scanner keyboard = new Scanner(System.in);

     double score[] = new double[10];


     boolean loopNaming=true;

     int i=0;

     String namae;

     String[] name = new String[10];

     int count = 0;



     while(loopNaming==true){

         System.out.printf("Enter name of student or done to finish: ");

         name[i] = keyboard.next();


         if(name[i].equals("done")){

             loopNaming = false;

         }

         else{

            System.out.println("Enter score: ");

            score[i] = keyboard.nextDouble();

            count++;

         }

         i=i+1;


     }

     for(int j = 0; j < count; j++) {

         System.out.println(name[j]+" "+score[j]);

     }

 }

}

试试这个代码,或者你可以选择任何其他数据结构。


查看完整回答
反对 回复 2021-11-11
  • 3 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信