确定用户是否按<enter> </enter>

时间:2013-03-26 08:33:34

标签: java arrays parsing trim

我已经做了好几天了,我非常沮丧。这是我在Java学习的第一门课程,所以请依靠我缺乏知识。我应该编写一个包含用户输入的10个等级数组的程序,然后计算平均值。特别是我遇到了以下问题。

你不应该从用户那里读取双打号码,你应该读一个字符串。这是过程:

从用户那里读取一个字符串 修剪弦并获得长度 如果长度<1则用户命中并且你离开 如果长度> 0,则使用

将字符串转换为double
d =Double.parseDouble(S);

到目前为止我只是有这个。过去一周,我一直在添加和删除大量编码。而我似乎仍然无法让它发挥作用。任何帮助将不胜感激!

import java.util.*;
import java.io.*;

public class Arrays {

    public static void main(String[] args) {

       double d = 0;
       final int SIZE = 10;
       Scanner reader = new Scanner(System.in);
       String[ ] grades = new String[SIZE];

       System.out.println("Please enter up to 10 grades.");

       for (int i = 0; i < grades.length; i++){
           System.out.print("Grade " + (i + 1) + ": "); 
           grades[i] = reader.nextLine( );
       }

       System.out.println("\nNumber of valid grades entered: " + grades.length);
    }
}

3 个答案:

答案 0 :(得分:2)

试试这个

for (int i = 0; i < grades.length; ){
   System.out.print("Grade " + (i + 1) + ": "); 
   String str = reader.nextLine();
   if(str.trim().length() > 0){
       try{
           grades[i] = Double.parseDouble(str);
           i++;
       }catch(NumberFormatException e){
           e.printStackTrace();
       }
   }
}
System.out.println("\nNumber of valid grades entered: " + i);

恕我直言,我认为成绩应该是double

的数组
 double[] grades=new double[SIZE];

答案 1 :(得分:0)

您可以按照以下方式尝试

 int correctGrades=0;
 double[] grades=new double[SIZE];  //Create array of double instead of String
 for (int i = 0; i < SIZE; i++){
    System.out.print("Grade " + (i + 1) + ": "); 
    String str=reader.nextLine();
    if(str.length() > 0){ // If length is greater than 0 then its correct grade
      grades[i]=Double.parseDouble(str);
      correctGrades++;
    }
}
 System.out.println("\nNumber of valid grades entered: " + correctGrades);

答案 2 :(得分:0)

根据我的理解,这应该是你的for循环

for (int i = 0; true; i++) {
      System.out.print("Grade " + (i + 1) + ": ");
      grades[i] = reader.nextLine();
      if (grades[i].equals("")) {
        break;
      }
       //check for number format exception if user enters invalid input 
      try {
        d = Double.parseDouble(grades[i]);
      }
      catch (NumberFormatException exception) {
       exception.printStackTrace();
      }
    }
  System.out.println("The value of double entered is : " + d);
    } 

在这里,您可以无限次地运行循环,但每次循环都会检查用户输入。 现在,如果用户输入空字符串,则使用break语句退出循环