我想用一个数字数组写一个代码,显然不是一个字符串,它们需要加倍。我编写代码的方式,我知道如何工作的唯一方式。也许即时通讯让它变得太复杂,一个阵列会让它变得简单。我是编程的新手,几天之内新的。请帮忙。
我们需要的是: 编写一个代码,对10个数字的输入进行平均,并显示平均值,如果它们通过或失败。如果< 50失败,否则> 50通。
我们必须使用数组,我们需要使用JOptionPane.showMessageDialog。,数字需要加倍并舍入到两位小数。
我声明了双倍,但如果我输入十进制数字,我会收到错误。如果我只是按原样运行代码,它将让我输入10个数字,平均它们然后告诉我是否通过或失败。我只是在使用其他因素时迷失了方向。感谢
工作代码如下:
package avgpassorfail;
import javax.swing.JOptionPane;
public class Avgpassorfail {
public static void main(String[] args) {
String firstNumber,
secondNumber,
thirdNumber,
fourthNumber,
fifthNumber,
sixthNumber,
seventhNumber,
eighthNumber,
ninethNumber,
tenthNumber;
double number1,
number2,
number3,
number4,
number5,
number6,
number7,
number8,
number9,
number10,
sum;
firstNumber =
JOptionPane.showInputDialog ( "Enter 1st Grade" );
secondNumber =
JOptionPane.showInputDialog ( "Enter 2nd Grade" );
thirdNumber =
JOptionPane.showInputDialog ( "Enter 3rd Grade" );
fourthNumber =
JOptionPane.showInputDialog ( "Enter 4th Grade" );
fifthNumber =
JOptionPane.showInputDialog ( "Enter 5th Grade" );
sixthNumber =
JOptionPane.showInputDialog ( "Enter 6th Grade" );
seventhNumber =
JOptionPane.showInputDialog ( "Enter 7th Grade" );
eighthNumber =
JOptionPane.showInputDialog ( "Enter 8th Grade" );
ninethNumber =
JOptionPane.showInputDialog ( "Enter 9th Grade" );
tenthNumber =
JOptionPane.showInputDialog ( "Enter 10th Grade" );
number1 = Integer.parseInt ( firstNumber);
number2 = Integer.parseInt ( secondNumber);
number3 = Integer.parseInt ( thirdNumber);
number4 = Integer.parseInt ( fourthNumber);
number5 = Integer.parseInt ( fifthNumber);
number6 = Integer.parseInt ( sixthNumber);
number7 = Integer.parseInt ( seventhNumber);
number8 = Integer.parseInt ( eighthNumber);
number9 = Integer.parseInt ( ninethNumber);
number10 = Integer.parseInt ( tenthNumber);
sum = (number1 + number2 + number3 + number4 + number5 + number6 + number7 + number8 +number9 + number10)/10;
JOptionPane.showMessageDialog (
null, "The Average is " + sum, "Results",
JOptionPane.PLAIN_MESSAGE);
if (sum < 50){
JOptionPane.showMessageDialog (
null, "Fail", "Results",
JOptionPane.PLAIN_MESSAGE);
}else{
JOptionPane.showMessageDialog (
null, "Pass", "Results",
JOptionPane.PLAIN_MESSAGE);
}
System.exit ( 0 );
}
}
答案 0 :(得分:1)
number1 = Integer.parseInt ( firstNumber);
期望收到一个“看起来像”一个整数的字符串,如果你给它一些“看起来像”的东西你会收到一个错误。您应该使用Double.parseDouble(firstNumber);
是的,你应该绝对使用一个数组。数组的使用允许更短的程序;
public class UseArrays {
public static void main(String[] args){
int numberOfEntries=10
double[] numbers =new double[numberOfEntries];
for(int i=0;i< numbers .length;i++){
String option =
JOptionPane.showInputDialog ( "Enter Grade " + i );
numbers[i]=Double.parseDouble(option);
}
double sum=0;
for(int i=0;i< numbers .length;i++){
sum+=numbers[i];
}
double average=sum/10;
System.out.println(average);
}
}
另请注意,使用以这种方式创建的程序,除了写入更短之外,更改条目数非常容易。如果您有数百,数千或甚至数百万条目,您不希望手动输入每个条目。
你可以通过不存储每个double然后稍后添加它们来使这个程序更短(这也会使得使用数组unnessissary)。这个程序看起来像;
public class DontUseArrays {
public static void main(String[] args){
int numberOfEntries=10
double sum=0;
for(int i=0;i< numberOfEntries;i++){
String option =
JOptionPane.showInputDialog ( "Enter Grade " + i );
double number=Double.parseDouble(option);
sum+=number;
}
double average=sum/10;
System.out.println(average);
}
}
答案 1 :(得分:1)
哇,那是重复的很多。你应该用循环来清理它,比如:
double sum = 0; // initialize variable for sum of all the numbers
for (int i = 1; i <= 10; i ++) { // go from 1 to 10
String strNum = JOptionPane.showInputDialog("Enter grade #" + i); // prompt for input
double dNum = Double.parseDouble(strNum); // convert to double
sum += dNum; // add to sum
}
double avg = sum / 10; // now get the average
答案 2 :(得分:0)
要将Strings
解析为double
类型,请使用Double.parseDouble(String s)
您可以将int
返回的Integer.parseInt(String s)
分配给double
个变量,因为double
的精度高于int
s,因此类型转换自动发生而无需显式演员。
但是,根据定义,您无法使用String
将小数点int
解析为Integer.parseInt(String s)
。
附加点 - 没有必要声明String
变量,或者每个数字都有一个单独的变量 - 使用数组和循环输入数字会更加清晰,并且可能总结他们进来的数字,如:
double[] numbers = new double[10];
double sum = 0d;
for(int i = 0; i < numbers.length; i++ ) {
numbers[i] = Double.parseDouble(JOptionPane.showInputDialog ( "Enter 1st Grade" ));
sum += numbers[i];
}
double mean = sum / numbers.length;
答案 3 :(得分:0)
这是一段代码片段,可以帮助您:
public void test() {
double[] numbers = new double[10];
double sum = 0;
for ( int i = 0; i < numbers.length; i++ ) {
String number = JOptionPane.showInputDialog ( "Enter Grade "+(i+1) );
numbers[i] = Double.parseDouble(number);
sum += numbers[i];
}
}
答案 4 :(得分:0)
如果你必须计算1000个等级怎么办?这就是我们使用数组的原因。
package avgpassorfail;
import javax.swing.JOptionPane;
public class Avgpassorfail
{
public static void main(String[] args)
{
String[] mumStr = new String[10];
double sum = 0;
for (int i = 0; i < numStr.length; i++) //0 to 10 (10 not included)
{
numStr[i] = JOptionPane.showInputDialog ( "Enter Grade " + (i+1)+ ": " );
sum += Double.parseDouble(numStr[i]);
}
double avg = sum / numStr.length;
JOptionPane.showMessageDialog (null, "The Average is " + avg, "Results", JOptionPane.PLAIN_MESSAGE);
if (avg < 50)
{
JOptionPane.showMessageDialog (null, "Fail", "Results", JOptionPane.PLAIN_MESSAGE);
}
else
{
JOptionPane.showMessageDialog (null, "Pass", "Results", JOptionPane.PLAIN_MESSAGE);
}
System.exit ( 0 );
}
}