GPAがdoubleではなくintとして入力されていても、私はそれを行うことができません。しかし、studentIDフィールドに10進数値を入力すると、FormatExceptionをスローすることができました。私が知っているのは、デフォルトでdouble型はint型の値を受け入れます。それが例外をスローしない理由ですが、GPAとして入力された値がdoubleであることを確認する必要があります。入力がdoubleではなくintの場合、FormatExceptionをスローする方法はありますか?
using System;
using static System.Console;
// Declare a Student
// ID must be an integer and gpa must be a double to continue
namespace Debug4_4
{
class Debug4_4
{
static void Main()
{
Student stu = new Student();
bool areNumbersGood = false;
while (!areNumbersGood)
{
try
{
stu.setID();
stu.setGPA();
areNumbersGood = true;
}
catch (FormatException e)
{
WriteLine(e.Message);
WriteLine("(Either the student ID or the GPA");
WriteLine(" was not in the correct format.)");
WriteLine("You will have to re-enter the student data.");
}
}
WriteLine("Valid student");
}
}
public class Student
{
private int stuId;
private double stuGpa;
public void setID()
{
string stuNumber;
try
{
Write("Enter student ID ");
stuNumber = ReadLine();
stuId = Convert.ToInt32(stuNumber);
}
catch (FormatException fe)
{
throw (fe);
}
}
//throw (fe);
//}
public void setGPA()
{
string stuGPAString;
//string stuGPAString;
try
{
Write("Enter student GPA ");
stuGPAString = ReadLine();
stuGpa = Convert.ToDouble(stuGPAString);
}
catch (FormatException fe)
{
throw (fe);
}
}
}
}
生徒は4 GPAまたは5 GPAですか?ユーザーが入力したint値が、なぜこの種の検証をしたいのかをdoubleに変換できるのであれば? –
'stuGpa' ** IS ** a double。何が問題なのですか?あなたは 'int'が' double'に変換可能であることを認識しており、入力を 'double'フィールドに格納していると述べています。したがって、入力が「二重」であることをすでに確認しています。 –
https://stackoverflow.com/questions/12550184/throw-a-format-exception-c-sharp – Naidu