精华内容
下载资源
问答
  • Freemarker 循环遍历数字

    千次阅读 2018-08-17 12:40:23
    普通的循环遍历是这样: <#list recordPage.content as record> <!--do someting--> </#list>  要是遍历数字呢?可以这样: max 是传来的值。 <#list 1.....

    普通的循环遍历是这样:

    <#list recordPage.content as record>
    <!--do someting-->
    </#list>

     要是遍历数字呢?可以这样: max 是传来的值。

    <#list 1..max as i>    
      <li><a href="#">${i}</a></li>
    </#list>

    但是如果这样写 -->     <#list 1..${max} as i>   Freemaker会报语法错误。

          当时我的需求是要写一个双层<#list>  外层list遍历对象,内层list需要对象的一个数量属性值来决定这个对象再次遍历几次。

          那上面代码中的max怎么赋值呢,试验了各种情况,只要<#list 1..${max} as i>遍历数字时出现‘${}’,就会报错。所以就试验了下不带 ${} 会出现什么样的情况,于是出现了下面的代码:

    <#list allocationCars as allocationCar>
        <#list 1..(allocationCar.qty) as i>
            <td>${allocationCar_index+1} . ${i_index}</td>
          </#list>
    </#list>

    成功完成需求!

          allocationCars 是后台传来的car对象集合,一般我们使用<#list>遍历后会用  “ defValue="${(allocationCar.brandId?c)!}"  ”这种方式来获取遍历后对象的属性。但是又由于<#list>遍历数字时候得语法限制,给max赋值的地方无法使用 ‘${}’ 。而经过上面的实验得知,在<#list> 标签中获取对象的属性是不需要加‘${}’的,可以直接获取到,看来应该是freemaker的内部机制进行了处理。

     

    展开全文
  • 矩阵的第一行记录下此时0-3的值。第二行记录下右移1位之后0-3的值。以此类推,写出整个矩阵,与x1向量相乘,即得结果。计算过程完全符合公式。 法2:上面的方法计算起来速度不够快,我们可以通过一个简单...

    法一:从一个例题出发来看循环卷积的过程,首先我们采用定义循环卷积的公式来求解。我们把公式的计算过程写成矩阵相乘会更加直观。先把要进行循环的序列x2写成矩阵形式(由于循环卷积不满足交换律,注意先后顺序),把x2以y轴为对称轴翻转,翻转后进行周期延拓。在矩阵的第一行记录下此时0-3点的值。第二行记录下右移1位之后0-3点的值。以此类推,写出整个矩阵,与x1向量相乘,即得结果。计算过程完全符合公式。

    法2:上面的方法计算起来速度不够快,我们可以通过一个简单的方法快速写出x2的矩阵。按列来观察,第一列是1234,第二列把4往前挪到首位,以此类推,写出整个矩阵。考虑8次循环卷积时,只需要注意补上0即可。

    法3:另一种方法是先算出对位相乘相加序列,然后根据循环区间修正结果。若循环区间为4,则把4之后的序列搬移到前面,两序列求和即得最终结果。

    另外,需要注意原始序列有平移的情况。

    展开全文
  • java实现大数字减乘除

    千次阅读 2018-11-18 13:20:41
    java代码实现 大数字减乘除 一:加法 基本上是模拟了人工的算法,比如1234+987 a.先把位数补齐一致,变成:1234 + 0987 b.从各位开始运算,每次用一个变量记录是否要进位 c.遍历所有的位置就完成了加法; 代码...

    java代码实现 大数字的 加减乘除

    一:加法
    基本上是模拟了人工的算法,比如1234+987
    a.先把位数补齐一致,变成:1234 + 0987
    b.从各位开始运算,每次用一个变量记录是否要进位
    c.遍历所有的位置就完成了加法;
    代码如下:`

    public class 大数加法 {
    	public static void main(String[] args) {
    	//输入2个字符串类型的大数字
    		String s1 = new Scanner(System.in).nextLine();
    		String s2 = new Scanner(System.in).nextLine();
    		String result=add(s1,s2);
    		System.out.println(result);
    	}
    	private static String add(String s1, String s2) {
    		//保证s1小于等于s2的长度
    		if(s1.length()>s2.length()){
    			String t=s1;
    			s1=s2;
    			s2=t;
    		}
    		int cha=s2.length()-s1.length();
    		for (int i = 0; i < cha; i++) {
    			s1='0'+s1;   //把s2前面的空缺补上0
    		}
    		String result="";
    		int w=0;      //定义一个进位的变量
    		for (int i = s2.length()-1; i >=0 ; i--) {
    			//从s1和s2中取出字符,减去48就是 int类型的数字,再加上进位就是当前位的结果
    			int  c=s2.charAt(i)+s1.charAt(i)-96+w;
    			w=c/10;    //把当前计算结果整除10就是  w的进位
    			result=(c%10) + result;        //取余就是 当前位应该显示的数字,把它加在前面就可以了
    		}	
    		//因为我们的循环没有判断第一位的进位	,所以最后再判断一次
    		if(w==1)result=1+result;
    		return result;
    	}
    }
    

    二。减法
    减法和加法类似,也是模拟人工计算
    代码如下

    public class 大数的减法 {
    	public static void main(String[] args) {
    		String s1 = new Scanner(System.in).nextLine();
    		String s2 = new Scanner(System.in).nextLine();
    		String result = jian(s1, s2);
    		System.out.println(result);
    	}
    	private static String jian(String s1, String s2) {
    		String fuhao = "";
    		int l1 = s1.length();
    		int l2 = s2.length();
    		//判断,如果s1小于s2那么 符号就是  -     然后,s1和s2交换位置,保证s1是大的
    		if ((l1 == l2 && s1.compareTo(s2) < 0) || l1 < l2) {
    			fuhao = "-";
    			String t = s1;
    			s1 = s2;
    			s2 = t;
    		} 
    		for (int i = 0; i < Math.abs(l1-l2); i++) {
    			s2='0'+s2;  //补0处理,使长度一致
    		}
    		String result="";
    		int w=0;
    		for (int i = s1.length()-1; i >=0 ; i--) {
    			//计算每一个位置的差,在加上借位w的值
    			int c=s1.charAt(i)-s2.charAt(i)+w;
    			//如果c小于0,说明需要借位,c+=10,然后w该为-1,否则,借位w=0
    			if(c<0){
    				c+=10;
    				w=-1;
    			}else{
    				w=0;
    			}
    			result=c+result;    // 把当前位的数字放入result里
    		}
    		return fuhao+result;
    	}
    }
    

    3.乘法
    乘法也是模拟人工计算,就是把其中一个数字,拆分成一位数,然后累和
    例如 123* 45 就是123✖40+123✖5 其中加法用的是上面的add方法
    代码如下:

    import java.util.Scanner;
    
    public class 大数的乘法 {
    	public static void main(String[] args) {
    		//输入2个数字
    		String s1 = new Scanner(System.in).nextLine();
    		
    		String s2 = new Scanner(System.in).nextLine();
    		
    		String result=muilt(s1,s2);
    
    		System.out.println(result);
    	}
    
    	private static String muilt(String s1, String s2) {
    		String result="";
    		//把s2拆分成一个一个的
    		for (int i = 0; i < s2.length(); i++) {
    			//计算s2中单个数字和s1的乘积
    			String temp=per(s1,s2.charAt(i));
    			//把每次计算的乘积想加(因为每次的乘积位置不一样,所以先要补0)
    			result=add(result,add_0(temp,s2.length()-1-i));
    		}
    		
    		return result;
    	}
    	//单个数字和s1的积
    	private static String per(String s1, char c) {
    		int n=c-'0';
    		String result="";
    		int w=0;
    		for (int i = s1.length()-1; i >=0; i--) {
    			//计算当前位置的积
    			int m=(s1.charAt(i)-'0')*n+w;
    			// m/10就是进位值
    			w=m/10;
    			//  m%10就是当前位置的值
    			result=m%10+result;
    		}
    		//对第一位进行判断
    		if(w!=0)result=w+result;
    		return result;
    	}
    	
    	//大数和的方法
    	private static String add(String s1, String s2) {
    		//保证s1小于等于s2的长度
    		
    		if(s1.length()>s2.length()){
    			String t=s1;
    			s1=s2;
    			s2=t;
    		}
    		int cha=s2.length()-s1.length();
    		for (int i = 0; i < cha; i++) {
    			s1='0'+s1;
    		}
    
    		String result="";
    		int w=0;
    		for (int i = s2.length()-1; i >=0 ; i--) {
    			int  c=s2.charAt(i)+s1.charAt(i)-96+w;
    			w=c/10;
    			result=(c%10) + result;
    		}
    		if(w==1)result=1+result;
    		return result;
    	}
    	private static String add_0(String temp, int i) {
    		for (int j = 0; j < i; j++) {
    			temp=temp+'0';
    		}
    		return temp;
    	}
    }
    

    **

    4.除法

    **大数的除法和模拟人工不一样,
    基本思路:例如 m/n
    a.首先令temp=10kn ,并且temp<m, k取最大
    b.然后m=m-temp ,当m<temp时停止,记录执行的次数i,和此时的k
    c.当前次的result=i00…(k个0)
    d.循环执行直到m<n,把result累加即可
    如: 128/3
    a. temp=30,k=1
    b.128-30=98 i=1;98-30=68 i=2; 68-30=38 i=3; 38-30=8 i=4;8-30<0结束;
    c;result=40(i=4,k=1)
    d:temp=3,k=0
    e:8-3=5 i=1; 5-3=2 i=2 ; 2-3<0 结束
    f:result=40+2(i=2,k=0)
    所以结果是42

    import java.util.Scanner;
    
    public class 大数的除法 {
    	public static void main(String[] args) {
    		String s1 = new Scanner(System.in).nextLine();
    		String s2 = new Scanner(System.in).nextLine();
    		//如果s1<s2那么就不运算了,直接返回0
    		if(!check(s1,s2)){
    			System.out.println(0);
    			return;
    		}
    		String result = chufa(s1, s2);
    
    		System.out.println(result);
    	}
    	private static boolean check(String s1, String s2) {
    		if(s1.length()<s2.length() || (s1.length()==s2.length() && s1.compareTo(s2)<0)){
    			return false;
    		}	
    		return true;
    	}
    
    	private static String chufa(String s1, String s2) {
    		String result="";
    		//循环直到s1<s2为止
    		while(check(s1,s2)){
    			int n=s1.length()-s2.length();
    			//判断需要补多少0 ,如果s1的前m位(m=s2.length())比s2小,那么只要补n-1个0,否则需要补n个0(n=s1和s2的长度差)
    			//比如 123/3 , 3需要补成30,是n-1个,而 450/3 ,3需要补成300,是n个0
    			String num_0=s1.substring(0,s2.length()).compareTo(s2)>=0?get0(n):get0(n-1);	
    			int i=0; //i代表减法执行了几次,也就是当前次的商
    			//减法循环
    			while(true){
    				String m=jian(s1,s2+num_0);
    				//如果减成负数了,那么就退出循环
    				if(m.startsWith("-"))break;
    				//否则 s1重新赋值
    				s1=m;
    				i++;		
    			}
    			//把商补上位数的0,就是当前次的结果,再用 大数加的 方法和前面的数累加
    			result=add(""+i+num_0,result);
    		}
    		return result;
    	}
    	
    	//返回 n个0的字符串
    	private static String get0(int n) {
    		String result="";
    		for (int i = 0; i < n; i++) {
    			result+='0';
    		}
    		return result;
    	}
    	
    	//大数加
    	private static String add(String s1, String s2) {
    		//保证s1小于等于s2的长度
    		
    		if(s1.length()<s2.length()){
    			s1=get0(s2.length()-s1.length())+s1;
    		}else{
    			s2=get0(s1.length()-s2.length())+s2;
    		}
    
    		String result="";
    		int w=0;
    		for (int i = s2.length()-1; i >=0 ; i--) {
    			int  c=s2.charAt(i)+s1.charAt(i)-96+w;
    			w=c/10;
    			result=(c%10) + result;
    		}
    		
    		if(w==1)result=1+result;
    	
    		return result;
    	}
    	//大数减法
    	private static String jian(String s1, String s2) {
    		String fuhao = "";
    		if (!check(s1,s2)) {
    			fuhao = "-";
    			String t = s1;
    			s1 = s2;
    			s2 = t;
    		} 
    		s2=get0(Math.abs(s1.length()-s2.length()))+s2;
    		String result="";
    		int w=0;
    		for (int i = s1.length()-1; i >=0 ; i--) {
    			int c=s1.charAt(i)-s2.charAt(i)+w;
    			if(c<0){
    				c+=10;
    				w=-1;
    			}else{
    				w=0;
    			}
    			result=c+result;
    		}
    		result=result.replaceAll("^0+", "");
    		return fuhao+result;
    	}
    }
    
    
    展开全文
  • 实际的人机交互式的代码中经常会出现要求

    在实际的人机交互式的代码中经常会出现要求输入数字,但是没有输入数字的情况,会出现几种情况?如下

    int n;

    cin >> n;

    当用户输入了单词而非数字,则会出现以下4种情况:

    1. n的值保持不变;

    2. 输入的不匹配的单词留在内存队列中;

    3. cin产生错误标志;必须使用clear()进行reset flag,否则程序将不会继续读取输入。

    4. 返回false。

    C++书中给出了“遇非数字退出”和“跳过继续读取”两种情况两种情况的经典代码:

    情况一:非数字输入退出

    // cinfish.cpp -- non-numeric input terminates loop
    #include <iostream>
    const int Max = 5;
    int main()
    {
    using namespace std;
    // get data
    double fish[Max];
    cout << “Please enter the weights of your fish.\n”;
    cout << “You may enter up to “ << Max
    << “ fish <q to terminate>.\n”;
    cout << “fish #1: “;
    int i = 0;
    while (i < Max && cin >> fish[i]) {
    if (++i < Max)
    cout << “fish #” << i+1 << “: “;
    }
    // calculate average
    double total = 0.0;
    for (int j = 0; j < i; j++)
    total += fish[j];
    // report results
    if (i == 0)
    cout << “No fish\n”;
    else
    cout << total / i << “ = average weight of “
    << i << “ fish\n”;
    cout << “Done.\n”;
    return 0;
    }

    代码中:while (i < Max && cin >> fish[i])当cin读取非数字时,cin为0,while循环退出。

    如果想跳过非数字的输入,提示用户重新输入则需要在代码中完成以下3个步骤:

    1. Reset cin,从而cin可以重新读取输入;

    2. 清除之前的错误输入;

    3. 提示用户再次输入。

    下面这个代码则诠释了上面3个步骤:

    情况二:非数字输入提示重新输入

    // cingolf.cpp -- non-numeric input skipped
    #include <iostream>
    const int Max = 5;
    int main()
    {
    using namespace std;
    // get data
    int golf[Max];
    cout << “Please enter your golf scores.\n”;
    cout << “You must enter “ << Max << “ rounds.\n”;
    int i;
    for (i = 0; i < Max; i++)
    {
    cout << “round #” << i+1 << “: “;
    while (!(cin >> golf[i])) {
    cin.clear();
    // reset input
    while (cin.get() != ‘\n’)
    continue;
    // get rid of bad input
    cout << “Please enter a number: “;
    }
    }
    // calculate average
    double total = 0.0;
    for (i = 0; i < Max; i++)
    total += golf[i];
    // report results
    cout << total / Max << “ = average score “
    << Max << “ rounds\n”;
    return 0;
    }

    while (!(cin >> golf[i]))

    {
    cin.clear();     // reset input
    while (cin.get() != ‘\n’)
    continue;       // get rid of bad input
    cout << “Please enter a number: “;
    }

    如果输入为数字cin为true,!cin则为0,跳出while循环。如果cin非数字,则执行循环内部的3步。

    展开全文
  • c语言循环位移(数字,字符串)

    万次阅读 2011-09-15 09:07:15
    C语言中没有提供循环移位的操作符,但可以通过简洁的方式实现循环移位 设一个操作数x有s位则循环左移n位的操作为: (x > (s - n)); 同理右移n位位: (x >> n) | (x 实际编程中可以用宏定义实现循环移位: #...
  • 51单片机上通过C语言编写代码,使用中断,按键按一下数码管上面数字从00开始1,实现00——99的循环 准备工作: keil建立工程 proteus仿真验证 代码如下: /* *功能:用中断实现开关控制实现每按一次,...
  • 思路:外层首先利用for循环遍历1-1000内的数字,内层嵌套两个并行if判断,上面的用来输出能被5整除的数字,下面的用来实现每行输出三个后换行。 代码: public class Division { public static void main(String...
  • s:iterator与c:forEach 数字循环

    千次阅读 2010-08-16 15:34:00
    大家知道jstl里可以这样写 Java code <c:forEach begin="0" end="9" var="i"> ${i } </c:forEach> <br /> 要用struts2的iterator实现上面的方法 或许你知道可以这样写 Java ...
  • 易错:for循环循环变量的更新所带来的问题标签:C语言 for循环 易错by 小威威1.for循环的介绍for循环的格式如下: for (表达式1;表达式2;表达式3) 其中,表达式1指初始化表达式,表达式2指循环条件表达式...
  • Linux for循环之列表for循环

    万次阅读 多人点赞 2017-07-22 12:38:28
    本篇博文重点看列表for循环,列表for循环大的格式固定,列表构成上分多种情景,如数字列表、字符串列表、命令列表、脚本传参列表等,下面一一来看。 列表for循环语句用于将一组命令执行已知的次数,语句基本格式...
  • js 循环

    千次阅读 2020-10-26 15:24:44
    for循环: 首先我们的for循环单个就是我们将... cons += "这个数字为" + i + "<br>";//将内容进行输出赋值到我们空的字符串里面 } for in循环: for in循环我们不需要要条件,但是需要被循环的变量(值).
  • Int类型数字前面自动0

    千次阅读 2019-04-28 09:24:45
    Int类型数字前面自动0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio/ JavaScript 作者:戴伟雄 撰写时间:2019年4月25日 ~~...
  • 清晰明了有趣味的数字加密讲解

    千次阅读 2016-03-13 20:59:29
    白话数字签名(1)——基本原理...然后我们再逐步深入技术细节,最后将给出一个B/S信息系统中使用数字签名的DEMO。 由于数字签名基于非对称加密技术,所以我们需要先啰嗦一下对称加密和非对称加密技术。 对称加密
  • python再计算无限循环小数的循环

    千次阅读 2017-05-01 23:02:00
    如果无限小数的小数点后,从某一位起向右进行到某一位止的一节数字循环出现,首尾衔接,称这种小数为循环小数,这一节数字称为循环节。 #寻找1000以内的n,使得1/n的循环小数节长度最长#问题化简,首先不是素数的...
  • C++如何跳出多层循环

    万次阅读 2013-11-17 12:41:37
    循环中的break,java中可以后面带标志:break [flag](flag为要结束的循环层数),但C++中没有这个标志。 那C++中如何跳出多重循环呢? 以问题为例: 问题主题:抽签 问题描述: 将写有数
  • 罗马数字与阿拉伯数字的相互转换

    千次阅读 2018-05-02 09:27:22
      最近遇到一道非常有趣的题目,题目大意如下:有一个富翁银河系里做生意,而银河系使用的是罗马数字,所以他需要一个精明能干的助手,帮助他完成罗马数字与阿拉伯数字的相互转换,题目这个背景下衍生出交易...
  • while循环+无限循环.py

    千次阅读 2019-05-22 18:33:04
    while 循环和for循环...确定满足条件而不确定需要的循环次数时,while是很好的选择 输出0-100的数字 while 灵活使用 嵌套使用 continue : 结束本次循环,直接开始下一次循环 break :结束整个循环 ...
  • 给了一串数字:218916754,根据下面规则可以找出扣扣号码:首先删除第一个数,紧接着将第二个数放到这串...如此循环,知道剩下最后一个数,将最后一个数也删除,按照刚才删除的顺序,把这些数字一起得到一串数字
  • 算法系列之十五:循环和递归算法中的应用

    万次阅读 多人点赞 2012-05-20 23:11:36
    递归也算是一种程序控制结构,但是普遍被认为不是基本控制结构,因为递归结构一般情况下都可以用精心设计的循环结构替换,因此可以说,递归就是一种特殊的循环结构。因为递归方法会直接或间接调用自身算法,因此是...
  • for 循环,jQuery循环遍历详解

    万次阅读 2018-08-20 21:24:44
    1.for 循环 原生JS最基本的使用: for (var i=0;i&lt;cars.length;i++) { ..... } for - 循环代码块一定的次数 2.for in for/in - 循环遍历对象的属性 以任意顺序遍历一个对象的可枚举属性。对于每个...
  • Lua for循环

    万次阅读 2012-08-28 16:59:18
    Lua中for语句跟其他语言的for类似,语法上有一点点区别。Lua的for语句有两种:数字型和泛型 数字型:for var=exp1,exp2,exp3 do endvar从exp1变化到exp2,每次变化以exp3为步长递增var,并执行一次“执行体”。...
  • 有时候我们需要一个ArrayList的for循环中动态删除元素的需求, 废话不多说看代码 List list = new ArrayList(); list.add(0); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); ...
  • 循环

    万次阅读 2016-09-19 13:47:34
    循环码     循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,这些 性质有助于按所要求的纠错能力系统地构造这类码,且易于实现;同时循环码的性能也较好,具有较强的...
  • JS中的循环---最全的循环总结

    千次阅读 2019-05-28 16:52:34
    循环的之前,先知道一下循环结构的执行步骤 1、声明循环变量; 2、判断循环条件; 3、执行循环体操作; 4、更新循环变量; 5、然后循环执行2-4,直到条件不成立,跳出循环。 1、for-in循环 for-in 循环...
  • python:while循环、for循环

    千次阅读 多人点赞 2018-03-17 22:59:56
    python编程中,python提供了for循环和while循环 while循环: 基本语法为: while 判断条件: 执行语句...... 1、while循环用于循环执行程序,以处理需要重复处理的任务。 2、while循环用于多次判断同一个...
  • 10. C语言 -- 循环结构:for 语句和嵌套循环

    万次阅读 多人点赞 2018-10-19 19:18:09
    本文主要讲述 C 语言循环结构中的 for 语句,介绍了表达式的省略、逗号表达式和表达式中定义变量这三种灵活的使用方式,举例说明了循环嵌套的使用方式。
  • for循环练习题

    千次阅读 2019-04-12 22:33:30
    1.首先执行一个for循环打印五排 2.分成三块打印,首先最上面的空格三角形,其次中间的然后右边的 3.打印空格,分析,0-2-4-6-8都除以2得到01234我们打印的时候打印两个就行了 4.打印中间三角形数字,分析:第一排1 ...
  • Python for循环及用法详解

    千次阅读 2019-06-19 15:40:14
    对于上面的语法格式有以下两说明: for-in 循环中的变量的值受 for-in 循环控制,该变量将会每次循环开始时自动被赋值,因此程序不应该在循环中对该变量赋值。 for-in 循环可用于遍历任何...
  • 小师妹:F师兄,上次你讲到JIT编译的过程中会进行一些编译上面的优化,其中就有循环展开和粗化锁。我对这两种优化方式很感兴趣,能不能展开讲解一下呢? 当然可以,我们先来回顾一下什么是循环展开。 更多精彩内容...
  • Python开发系列课程(4) - 循环结构

    千次阅读 2018-02-28 18:19:13
    循环结构 循环结构的应用场景 如果程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令。当然你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 268,412
精华内容 107,364
关键字:

如何在数字上面加循环点