我的三角数字生成器出现奇怪错误,请记住我对编程很新。 在程序中的某个点上,数字会出现故障并且有些数字会变为负数(值得注意的是,这些数字不仅仅是 - 在它们面前它们实际上已经被搞定了!)
import java.util.Scanner;
public class TriangularNumbers {
@SuppressWarnings("resource")
public static void main(String args[]) {
int tnumber = 1;
int amount = 2;
System.out.println("Welcome to the triangular numbers calculator!");
System.out.println("Type in the amount of triangular numbers to be generated!");
Scanner reps = new Scanner(System.in);
int repeats = reps.nextInt();
int i = 0;
while (i < repeats) {
i = i + 1;
System.out.println(i + ". " + tnumber);
tnumber = tnumber + amount;
amount = (amount + 1);
}
}
}
答案 0 :(得分:0)
如果你在网上查找三角形数字,你可以很容易地发现(我在维基百科上做过)在三角数n中找到的角的数量,可以用数学类型T(n)= n(n + 1)2给出
因此计算它你可以做那样的事情(你的代码,微小的变化)
public static void main(String args[]) {
long tnumber;
System.out.println("Welcome to the triangular numbers calculator!");
System.out.println("Type in the amount of triangular numbers to be generated!");
Scanner reps = new Scanner(System.in);
int repeats = reps.nextInt();
int i = 1;
while (i <= repeats) {
tnumber = i(i+1)/2;
System.out.println(i + ". " + tnumber);
i++;
}
}
此代码为您的tnumber变量提供更大的最大值,并且不需要使用金额变量。
我真的很想念使用Java这样的东西,你应该在使用java的同时针对更多面向对象的代码。
答案 1 :(得分:0)
您看到的问题,从它的外观来看,在Erwin Bolwidt的评论中被称为整数溢出。由于所有内容都存储在计算机上的Binary中,因此某些数据类型只能容纳如此多的数据。在Java中,int
原语是32位,这使我们的最大值为2147483647
或2^(31)-1
。
这可以使用long
原始数据类型来解决,尽管它确实在内存中使用了更多资源(因为它可以存储更多数据)。 long
是64位数据类型,其最大数量为9223372036854775807
或2^(63)-1
。
答案 2 :(得分:0)
public static void main(String[] args){
Scanner um=new Scanner(System.in);
int y,x=0;
System.out.print("Enter Number to find Triangular Number: ");
int a=um.nextInt();
for ( ; x < a; x++) {
y= x*(x+1)/2;
System.out.println("This is a Triangular Num: "+y);
}
}
答案 3 :(得分:0)
package domain;
public class HelloWorld {
public static void main(String[] args) {
int n =1;
while(n<=45){
System.out.println(n*3);
n++;
}
}
}