- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用从用户输入获得的种子值打印有限数量的 tribonacci 序列(其中任何项的值等于前面三个项的总和,即 [2,3,5,10,18,33...])。使用除 0 和 1 之外的任何其他正值,代码始终有效,如下所示:
2
3
5
Printing...
[2, 3, 5, 10, 18, 33, 61, 112, 206, 379, 697, 1282, 2358, 4337, 7977, 14672, 26986, 49635, 91293, 167914]
Process finished with exit code 0
但是以 0、1 和 1 作为种子,我得到:
0
1
1
Printing...
[0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Process finished with exit code 0
这是代码(我知道过于明确的注释,这是有原因的):
import java.util.Arrays;
import java.util.Scanner;
public class Tribonacci {
public static void main(String[] args) throws InterruptedException {
System.out.printf("Hello!\n");
Thread.sleep(2000);
System.out.printf("The purpose of this program is to display the first twenty terms of either a Fibonacci sequence or a Tribonacci sequence\n");
System.out.printf("To start, type \"F\" for Fibonacci or \"T\" for Tribonacci:\n");//Give prompt options
Scanner seqeuence = new Scanner(System.in);
String typeseq = seqeuence.next();//get user input, based on ^ prompt ^
printSequence(typeseq);
}
private static void printSequence(String typeOfSequence) throws InterruptedException {
//checks for which kind of sequence they want to print based on above prompt
switch (typeOfSequence) {
case "T"://if user types "T"
System.out.printf("You have chosen to print the first twenty terms of the Tribonacci sequence\n");
Thread.sleep(2000);
System.out.printf("We will need the seed terms for this to work, so input THREE non-negative integers, in numerical order:\n");
Scanner getTrib = new Scanner(System.in);
int[] tSeeds = new int[3];//scans for three seeds from the user, stores in an array of size 3
//put each seed term into an array, in order to perform arithmetic on the elements later
for (int i = 0; i < tSeeds.length; i++) {
tSeeds[i] = getTrib.nextInt();
}
int[] newTSeq = new int[20];//final array to be printed
newTSeq[0] = tSeeds[0];
newTSeq[1] = tSeeds[1];
newTSeq[2] = tSeeds[2];
int incrementT = 0;//used to traverse the array and move which seeds should be summed
for (int itemT : newTSeq) {
if (itemT == tSeeds[0] || itemT == tSeeds[1] || itemT == tSeeds[2]) {
continue;
} else {
newTSeq[3 + incrementT] = newTSeq[incrementT] + newTSeq[incrementT + 1] + newTSeq[incrementT + 2];
++ incrementT;
}
}
System.out.printf("Printing...\n");
Thread.sleep(2000);
System.out.print(Arrays.toString(newTSeq));//terms are converted into strings to be printed
break;
case "F"://if user types "F"
System.out.printf("You have chosen to print the first twenty terms of the Fibonacci sequence\n");
Thread.sleep(2000);
System.out.printf("We will need the seed terms for this to work, so input TWO non-negative integers, in numerical order:\n");
Scanner getFib = new Scanner(System.in);
int[] fSeeds = new int[2];//scan user input of TWO integers into an array that holds TWO integers
//put each seed term into array for later computation, like above
for (int i = 0; i < fSeeds.length; i++) {
fSeeds[i] = getFib.nextInt();
}
int[] newFSeq = new int[20];//final array to be printed
newFSeq[0] = fSeeds[0];
newFSeq[1] = fSeeds[1];
int incrementF = 0;
for (int itemF : newFSeq) {
if (itemF == newFSeq[0] || itemF == newFSeq[1]) { //if the iterator is on one of the seeds, don't sum
continue;
} else {
newFSeq[2 + incrementF] = newFSeq[incrementF] + newFSeq[incrementF + 1];//sums the two preceding terms
incrementF++;
}
}
System.out.printf("Printing...\n");
Thread.sleep(2000);
System.out.print(Arrays.toString(newFSeq));//convert all array values to strings, to be printed
break;
default://if neither case is satisfied, print this message
System.out.printf("Restart the program. Next time, input the SUGGESTED prompt items \"F\" for Fibonacci or \"T\" for Tribonacci");
}
}
}
最佳答案
嗯,你的情况很奇怪
if (itemT == tSeeds[0] || itemT == tSeeds[1] || itemT == tSeeds[2]) {
continue;
}
这意味着,如果 tSeeds[0]
、tSeeds[1]
或 tSeeds[2]
中的任何一个为 0,则不会向 newTSeq
数组分配任何内容(因为 itemT
对于 newTSeq
的所有元素默认为 0
,并且在 0,1,1 输入的情况下,您只需更改在循环之前将 newTSeq[1]
和 newTSeq[2]
更改为 1
)。
我不确定这个条件应该做什么。您也许可以将其删除。
关于java - 为什么这个算法会为除 0 和 1 之外的所有种子打印斐波那契/三波那契序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45006170/
有没有更好的方法用 PHP 将数据输出到 html 页面? 如果我想在 php 中用一些 var 制作一个 div,我会写类似的东西 print (''.$var.''); 或 echo "''.$v
我可以使用 java awt print 来打印文档/文件而不是使用 javax print 吗?我发现在 java awt print 中有一个选项可以使用 AttributedString 将内容
目前我通过以下方式运行 R 脚本: R --slave argument1 argument2 ... 我想知道 R 中关于如何退出脚本并发出警告的最佳实践,q() 会这样做吗? if(!file.
谁能告诉我如何编写一个程序,用 gcc 编译时打印 c ,用 g++ 编译时打印 c++? 最佳答案 #ifdef __cplusplus printf("c++\n"); #else
我需要支持在 KitKat 设备上打印,但我的目标 SDK 是 13(无法更改)。 特别是我需要打印一个 webview。 这是用于打印 webview 的 API: http://developer
我正在尝试创建一个简单的函数,其中 python 将根据您的年份输入计算年龄。我已经尝试了几种方法,但我没有运气 atm。 附:对不起,我是新手。 ame = input(" Enter your n
JavaFX 2.0 是否支持打印?我有一个文本区域,我从中获取文本然后我想打印它,但似乎没有这个功能。 当然,这里我说的是打印到打印机。 :) 最佳答案 尚不支持。作为一种解决方法,您可以使用 Ja
我试图找出printOn的重点。我查看了一些实现它的类,看起来它只是帮助打印不同数据类型的单位。这是准确的吗? 如果是这样,有人能指出我如何为我自己的类(class)实现这一点的正确方向吗?我将在可能
我无法让 IE 打印我的 Canvas (使用 excanvas 生成)...我使用的是最新版本的 excanvas。 http://dl.dropbox.com/u/997831/canvas.ht
我搜索了很多但没有人回答我的问题,我读到在这样的信号处理程序中使用 cout 是不安全的: void ctrlZHandler(int sig_num) { //SIGTSTP-18
我有兴趣打印一系列查询。我有以下代码。 start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) end = datetime.datetime(201
public class javaClass { public static void main(String [] arg) { String row1 = "A____A"
我需要写入前一行的命令,例如不带\n 的 print()。 下面是一些示例代码: a=0 print("Random string value") if a==0: print_to_prev
我有一个使用 UIKit 和 Objective C 的旧 iOS 应用程序,我目前正在将其移植到 SwiftUI 和 Swift。一切都很顺利,我喜欢 Swift 和 SwiftUI。该应用程序已经
我创建了一个求和函数,它接受一个开始编号和一个结束编号,并返回这两点之间的总和答案 def print_sum_equations(start_number,end_number):
在 Perl 6 中,print 和有什么区别? , put和 say ? 我怎么看 print 5不同,但 put 5和 say 5看起来一样。 最佳答案 put $a就像 print $a.Str
我正在使用 here 中的 getOrgChart 库,我正在尝试打印整个图表,而不仅仅是可见部分。不幸的是,当使用标准库打印功能时,它只会打印出第一部分,而我不知道如何打印整个图表(该图表相当宽,大
我制作了一个非常适合 A4 页面的 View 。现在我想打印它。请注意,我没有使用drawRect或类似的东西,只是一个带有 subview 和文本标签的普通 View 。我的问题是,我对该 View
由于 Cocoa-Java 已弃用,我正在将 Cocoa-Java 代码迁移到 Cocoa + JNI。该代码打印存储在文件中的图像。新的 Cocoa 代码基本上是: NSImage *image =
这个问题已经有答案了: Printing a TDBGrid (4 个回答) 已关闭 6 年前。 如何在不安装或下载组件的情况下打印 DBGrid? 或者 如何将 DBGrid 的数据放入 RichE
我是一名优秀的程序员,十分优秀!