import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int n = in.nextInt(); float sum = 0; for(float i = 1; i <= n; i++){ sum = sum + (1 / i); } System.out.printf("%.9f",sum); } } }
根据java除法操作规则,当有一个为float类型则进行浮点型除法,此时1/2.0f = 0.5,若都为int类型,则1/2 = 0 ,除后再进行int—>float类型转换仍旧为0.0000,所以在除法中应保证一个数为浮点型才能得到小数点后数字
for(int i = 1; i <= n; i++){
sum = sum + ((float)1.0000 / i);
}
或者
for(int i = 1; i <= n; i++){
sum = sum + (1 / (float)i);
}都可以