我希望有一个函数读取任意int,直到插入数字'0',然后显示插入有序列表中的数字.
为此我写了这个函数:
import Data.List
readIntegers :: IO()
readIntegers = do
putStrLn "insert a number: "
num<-getLine
let list = ordList ((read num :: Int):list)
if (read num == 0)
then print list
else readIntegers
where ordList ::[Int]->[Int]
ordList [] = []
ordList xs = sort xs
Run Code Online (Sandbox Code Playgroud)
这编译得很好,但是当我插入数字'0'时,它给了我这个错误:
*** Exception: <<loop>>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?
我想读取三个文件的路径(例如"../c/..file"),以及来自argv []的long并将它们绑定到三个已经创建的char*,并且还要调用一个long值NUM.
这是我的主要功能:
int main(int argc, char* argv[]){
char* file1 = NULL;
char* file2 = NULL;
char* file3 = NULL;
long num = 0;
//copy the file paths to the char*'s
strcpy(file1, argv[1]);
strcpy(file2, argv[2]);
strcpy(file3, argv[3]);
// convert from string to long int
num = strtol(argv[4],NULL,0);
}
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,文件的文件名和long的值不会像它们应该的那样最终变量.
我怎样才能解决这个问题 ?
在我的程序中,我检查argc值,以确保我没有传递错误的东西,但在这里我写这个函数只是为了说明我的问题.
如果我有这样一个数组:
int * array = ...
Run Code Online (Sandbox Code Playgroud)
如果我想删除它的内容,在C中执行此操作的最快和最有效的方法是什么?
首先,为了让您理解这个问题,我将简要解释一下我的项目:
我有一个名为的类Pair,它基本上创建了类型
Pair<String,Double>
Run Code Online (Sandbox Code Playgroud)
并且有一个getFirst()和分别getSecond()返回String和Double值的方法.
然后我有另一个名为的类,Package它基本上包含一个列表Pairs,并实现了Iterable接口,因此我可以通过列表进行迭代:
Package<Pair<String,Double>> package;
List <Pair<String,Double>> list;
Run Code Online (Sandbox Code Playgroud)
我要的是sum在doubles每个Pair使用iterator().
迭代器的定义如下Package:
public Iterator<E> iterator() {
return this.iterator();
}
Run Code Online (Sandbox Code Playgroud)
我尝试了两种不同的方法,在两种情况下都产生了:
Exception in thread "main" java.lang.StackOverflowError
at Package.iterator(Package.java:98)
Run Code Online (Sandbox Code Playgroud)
这是第一个:
public static double packageWeight(Package<Pair<String, Double>> package) {
double sum = 0;
Pair<String, Double> pair;
while (package.iterator().hasNext()) {
pair = package.iterator().next();
sum = sum + pair.getSecond();
} …Run Code Online (Sandbox Code Playgroud) 我有以下字符串:
String text = "stack Overflow, stack"
Run Code Online (Sandbox Code Playgroud)
一个字母:
char c = "*"
Run Code Online (Sandbox Code Playgroud)
和另一个字符串:
String word = "Overflow"
Run Code Online (Sandbox Code Playgroud)
整个想法是检查文本字符串中的"溢出"一词,并用char c包围它.输出应该如下所示:
"stack *Overflow*, stack"
Run Code Online (Sandbox Code Playgroud)
首先,为了解决这个问题,我考虑将字符串拆分为单词,然后检查每个单词是否包含所需的字符串作为其自身的子字符串.然后创建一个stringBuilder,并在单词的每一端附加char.我没有错误,但输出错误:
"stack *Overflow,* stack
Run Code Online (Sandbox Code Playgroud)
有关如何正确解决这个问题的任何帮助?