Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 浮点数没有出现?_Java_Floating Point - Fatal编程技术网

Java 浮点数没有出现?

Java 浮点数没有出现?,java,floating-point,Java,Floating Point,我必须为我的java类制作一个程序,掷2个骰子,然后比较观察到的外观百分比和预期的外观百分比之和。预计观察到的百分比将四舍五入到小数点后。但是,每当我运行程序时,观察到的百分比总是显示为“%.2fn,[percentage]”。以下是我的代码(承认有些混乱): import java.util.*; 公共阶级问题1{ 公共静态void main(字符串[]args){ 扫描仪键盘=新扫描仪(System.in); Random roll1=新的Random(); Random roll2=新的R

我必须为我的java类制作一个程序,掷2个骰子,然后比较观察到的外观百分比和预期的外观百分比之和。预计观察到的百分比将四舍五入到小数点后。但是,每当我运行程序时,观察到的百分比总是显示为“%.2fn,[percentage]”。以下是我的代码(承认有些混乱):

import java.util.*;
公共阶级问题1{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
Random roll1=新的Random();
Random roll2=新的Random();
int die1;
int die2;
整数和;
双零=0;
双1=0;
双二=0;
双三=0;
双四=0;
双五=0;
双六=0;
双七=0;
双八=0;
双九=0;
双十=0;
双[]发生率=新双[11];
double[]百分比=新的double[11];
百分比[0]=2.78;
百分比[1]=5.56;
百分比[2]=8.33;
百分比[3]=11.11;
百分比[4]=13.89;
百分比[5]=16.67;
百分比[6]=13.89;
百分比[7]=11.11;
百分比[8]=8.33;
百分比[9]=5.56;
百分比[10]=2.78;
System.out.print(“您想掷多少次骰子?”);
int repeat=keyboard.nextInt();
for(int i=0;i

如何去掉每个预期百分比前面的“%.2fn”,使其只有2位小数?我原以为
%.2fn
是这类东西的正确表示法,但它不适用于这种情况

println
方法对格式化模式一无所知,例如
%.2f
;它认为这是要打印的文本字符串


相反,请查看了解格式模式的文件。

为什么有
double zero=0
?为什么不只是出现[0]+;?您不需要为每个数组条目指定特定的变量。@Jeroenvanevel Ohmygosh非常感谢您指出这一点,哈哈。我觉得自己忽视了这一点太傻了。没问题,我们都去过。如果您想将代码再缩短50%:您不需要switch语句。只需使用
引用[sum]++
,它将根据
总和
选择正确的索引。还有一个提示:您不需要两个
随机的
实例。事实上,你不想那样!就用一个,它非常适合这个。另外:您可以内联多个变量,如
intdie1、die2、sum当我将
println
更改为
printf
时,它会给我以下错误消息:
线程“main”java.util.DuplicateFormatFlagsException中的异常:Flags=''位于java.util.Formatter$Flags.parse(未知源)位于java.util.Formatter$FormatSpecifier.Flags(未知源)位于java.util.Formatter$FormatSpecifier。(未知源)java.util.Formatter.parse(未知源)java.util.Formatter.format(未知源)java.io.PrintStream.format(未知源)java.io.PrintStream.printf(未知源)Problem1.main(Problem1.java:66)
,我真的不知道这是什么意思。
%
字符是
printf
的特殊字符,意思是这里有一个占位符用于设置值的格式。因此
%
本身不会打印实际的
%
符号。为了支持打印文字
%
,printf支持格式
%
来生成一个符号e
%
import java.util.*;
public class Problem1 {

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    Random roll1 = new Random();
    Random roll2 = new Random();
    int die1;
    int die2;
    int sum;
    double zero = 0;
    double one = 0;
    double two = 0;
    double three = 0;
    double four = 0;
    double five = 0;
    double six = 0;
    double seven = 0;
    double eight = 0;
    double nine = 0;
    double ten = 0;
    double[] occurances = new double [11];
    double[] percentages = new double [11];
    percentages[0] = 2.78;
    percentages[1] = 5.56;
    percentages[2] = 8.33;
    percentages[3] = 11.11;
    percentages[4] = 13.89;
    percentages[5] = 16.67;
    percentages[6] = 13.89;
    percentages[7] = 11.11;
    percentages[8] = 8.33;
    percentages[9] = 5.56;
    percentages[10] = 2.78;
    System.out.print("How many times would you like to roll the dice? ");
    int repeat = keyboard.nextInt();
    for (int i = 0; i < repeat; i++) {
        die1 = roll1.nextInt(6);
        die2 = roll2.nextInt(6);
        sum = die1 + die2;
        if (sum == 0) {
            zero++;
            occurances[0] = zero;
        } else if (sum == 1) {
            one++;
            occurances[1] = one;
        } else if (sum == 2) {
            two++;
            occurances[2] = two;
        } else if (sum == 3) {
            three++;
            occurances[3] = three;
        } else if (sum == 4) {
            four++;
            occurances[4] = four;
        } else if (sum == 5) {
            five++;
            occurances[5] = five;
        } else if (sum == 6) {
            six++;
            occurances[6] = six;
        } else if (sum == 7) {
            seven++;
            occurances[7] = seven;
        } else if (sum == 8) {
            eight++;
            occurances[8] = eight;
        } else if (sum == 9) {
            nine++;
            occurances[9] = nine;
        } else if (sum == 10) {
            ten++;
            occurances[10] = ten;
        }//if

    }//for

    System.out.println("roll      observed      expected");
    for (int i = 0; i < occurances.length; i++) {
        float observed = (float)(occurances[i]/repeat) * 100;
        System.out.println((i+2)+"         %.2fn"+observed+"%     "+percentages[i]+"%");
    }

}

}