小编lak*_*001的帖子

从输入Haskell读取数字

我希望有一个函数读取任意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)

我究竟做错了什么 ?

haskell

2
推荐指数
1
解决办法
1087
查看次数

从C中读取argv

我想读取三个文件的路径(例如"../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值,以确保我没有传递错误的东西,但在这里我写这个函数只是为了说明我的问题.

c

2
推荐指数
1
解决办法
745
查看次数

删除C中的int*的内容

如果我有这样一个数组:

int * array = ...
Run Code Online (Sandbox Code Playgroud)

如果我想删除它的内容,在C中执行此操作的最快和最有效的方法是什么?

c arrays

0
推荐指数
1
解决办法
70
查看次数

Java中的迭代器问题

首先,为了让您理解这个问题,我将简要解释一下我的项目:

我有一个名为的类Pair,它基本上创建了类型

Pair<String,Double>
Run Code Online (Sandbox Code Playgroud)

并且有一个getFirst()和分别getSecond()返回StringDouble值的方法.

然后我有另一个名为的类,Package它基本上包含一个列表Pairs,并实现了Iterable接口,因此我可以通过列表进行迭代:

Package<Pair<String,Double>> package;
List <Pair<String,Double>> list;
Run Code Online (Sandbox Code Playgroud)

我要的是sumdoubles每个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)

java iterator

0
推荐指数
1
解决办法
183
查看次数

在java中拆分单词时遇到问题

我有以下字符串:

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)

有关如何正确解决这个问题的任何帮助?

java regex string

-2
推荐指数
1
解决办法
48
查看次数

标签 统计

c ×2

java ×2

arrays ×1

haskell ×1

iterator ×1

regex ×1

string ×1