java生成泡泡糖代碼 java消滅泡泡糖

50分!請問個java基礎(chǔ)問題

這個是java中的不定長參數(shù)(Variable-length Argument),下面詳細說明一下:

10年積累的網(wǎng)站設(shè)計制作、做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有樂業(yè)免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

不定長參數(shù)的由來:

我們在調(diào)用某個方法的時候,如果事先無法決定參數(shù)的個數(shù),例如最簡單的輸出語句:System.out.println();這里面是無法事先決定要給的參數(shù)的個數(shù)的,比如輸出一個a1,就要寫System.out.println(a1);如果輸出兩個,就要改為System.out.println(a1,a2);怎么解決這個問題呢?

自J2se5.0之后開始支持不定長參數(shù)(Variable-length Argument),這樣就可以直接解決上述問題,來看一個范例:

public class Variable{

public static int sum(int... nums){ //使用...聲明參數(shù)

int sum = 0;

for(int num : nums){

sum+=num;

}

return sum;

}

這個范例就介紹了不定長參數(shù)的用法,其中...就是它的標志,要加在類型關(guān)鍵詞后面。其實仔細分析一下可知,nums就是一個數(shù)組,編譯器會將參數(shù)行的(int... nums)解釋為(int[] nums)。下面我們就來使用一下上面的這個使用了不定長參數(shù)的方法,代碼如下:

public class TestVariable{

public static void main(String[] args){

int sum = 0;

sum = Variable.sum(1,2);

System.out.println("1+2="+sum);

sum = Variable.sum(1,2,3);

System.out.println("1+2+3="+sum);

sum = Variable.sum(1,2,3,4,5);

System.out.println("1+2="+sum);

}

}

}

分析可知,編譯器會將傳遞給方法的參數(shù)解釋為int數(shù)組傳入至sum()中,所以實際上不定長參數(shù)的功能也是自J2se5.0之后所提供的編譯蜜糖(Compiler Sugar).

現(xiàn)在來說一下你說的情況,你說的public void method(Class... aaa){} ,這個是使用對象的不定長參數(shù),這個Class當(dāng)然可以換成其他的東西了,可以換成任何能夠作為參數(shù)來傳遞的東西,相信看了上面的話,你也早就明白了,呵呵……

最后我還要說明一下不定長參數(shù)使用時候的注意事項:

1:在使用不定長參數(shù)時,記得必須聲明的參數(shù)必須設(shè)置在參數(shù)行的最后一個,來具體看幾個例子:

public void someMethod(int arg1,int arg2,int... varargs){} (正確的)

public void someMethod(int... varargs,int arg1,int arg2){} (錯誤的)

2:不能使用兩個以上的不定長參數(shù),例如下面的方式是不合法的

public void someMethod(int... varargs1,int... varargs2){} (不合法)

3:如果使用對象的不定長參數(shù),聲明的方法相同,例如:

public void someMethod(someClass... somes){}

以上就是我所知道的不定長參數(shù)的相關(guān)知識,在這里獻丑了……

如果有高人了解的更多,我愿聞其詳……

最后,祝所有和我一樣在自學(xué)java的兄弟們,早日出頭……

{system.out.println("");}'>java return () -> {system.out.println("");}

這是lambda表達式, 一種語法(糖) ,可以簡化代碼,從java8開始支持lambda表達式.

有的編程語言,很多早就有l(wèi)ambda表達式了, ?java從8才開始支持lambda表達式,算比較晚的了.

我們以實現(xiàn)Runabble接口,來創(chuàng)建一個線程為例

一: 使用傳統(tǒng)的匿名內(nèi)部類來實現(xiàn),

Thread?t1?=?new?Thread(new?Runnable()?{

@Override

public?void?run()?{

System.out.println("匿名內(nèi)部類的方式實現(xiàn)Runnable接口");

}

});

t1.start();

很多人覺得上面的寫法比較啰嗦, 寫那么多代碼, 核心就是一句System.out.println("....")

二: lambda表達式實現(xiàn)

Thread?t2?=?new?Thread(()?-?{System.out.println("lambda表達式的實現(xiàn)Runabble接口");});

t2.start();

lambda表示配合Java8流, 進行函數(shù)式編程, 可以簡潔的完成很多比較啰嗦的邏輯 .

比如對一個ListDouble進行求和,求均值,求最大值,求最小值,元素個數(shù). 以前需要寫較多的代碼.

Java8流和lambda表達式的操作方法如下

//?lambda表達式配合java8流

ListDouble?list?=?Arrays.asList(5.9,?4.5,?6.2,?1.8,?3.7,?2.9,?2.52);

DoubleSummaryStatistics?ds?=?list.stream().collect(Collectors.summarizingDouble(x?-?x));

System.out.println("最小值:"?+?ds.getMin());

System.out.println("最大值:"?+?ds.getMax());

System.out.println("平均值:"?+?ds.getAverage());

// System.out.println("數(shù)量:"?+?ds.getCount());

// System.out.println("總和:"?+?ds.getSum());

相關(guān)的知識, 還是比較多, 建議先學(xué)習(xí)lambda表達式,然后學(xué)習(xí)java8流(stream)

求java大佬幫忙

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class Recipe {

private String name; //菜譜名稱

private String style; //菜系 如:川菜、湘菜等

private int time; //烹飪時長 分鐘

private String[] food; //食材

private String[] step; //操作步驟

public Recipe() {

}

public Recipe(String name, String style, int time, String[] food, String[] step) {

this.name = name;

this.style = style;

this.time = time;

this.food = food;

this.step = step;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getStyle() {

return style;

}

public void setStyle(String style) {

this.style = style;

}

public int getTime() {

return time;

}

public void setTime(int time) {

this.time = time;

}

public String[] getFood() {

return food;

}

public void setFood(String[] food) {

this.food = food;

}

public String[] getStep() {

return step;

}

public void setStep(String[] step) {

this.step = step;

}

@Override

public String toString() {

String foods="";

for (String f : food) {

foods+=f+" ";

}

String steps="";

for (int i = 0; i step.length; i++) {

steps += (i+1)+"."+step[i];

if(i!=step.length-1){

steps+=";";

}

}

return "菜譜名稱:" + name +

"\n菜系:" + style +

"\n時長:" + time +

"\n所需食材:" + foods +

"\n操作步驟:" + steps;

}

public static void print(Recipe[] recipes){

for (Recipe recipe : recipes) {

System.out.println(recipe);

}

}

public static Recipe[] searchRecipesContainName(Recipe[] recipes, String name){

ListRecipe list=new ArrayListRecipe();

for (Recipe recipe : recipes) {

if(recipe.getName().contains(name)){

list.add(recipe);

}

}

return list.toArray(new Recipe[list.size()]);

}

public static Recipe[] searchRecipes(Recipe[] recipes, String style){

ListRecipe list=new ArrayListRecipe();

for (Recipe recipe : recipes) {

if(recipe.getStyle().equals(style)){

list.add(recipe);

}

}

return list.toArray(new Recipe[list.size()]);

}

public static Recipe[] searchRecipeLessThan(Recipe[] recipes, int time){

ListRecipe list=new ArrayListRecipe();

for (Recipe recipe : recipes) {

if(recipe.getTime()time){

list.add(recipe);

}

}

return list.toArray(new Recipe[list.size()]);

}

public static Recipe[] searchRecipeContainsFood(Recipe[] recipes, String food){

ListRecipe list=new ArrayListRecipe();

for (Recipe recipe : recipes) {

for (String s : recipe.getFood()) {

if(s.equals(food)){

list.add(recipe);

}

}

}

return list.toArray(new Recipe[list.size()]);

}

public static void main(String[] args) {

//存儲5個菜譜的信息

Recipe[] recipes=new Recipe[5];

recipes[0]=new Recipe("醬牛肉","家常菜",120,

new String[]{

"牛腱子",

"黃豆醬油",

"黃酒",

"冰糖"

},

new String[]{

"準備好主要食材",

"加入食材慢燉兩至三小時"

});

recipes[1]=new Recipe("紅燒牛肉","家常菜",120,

new String[]{

"牛腩",

"牛筋",

"生抽",

"冰糖"

},new String[]{

"準備好主要食材",

"加入食材慢燉兩至三小時"

});

recipes[2]=new Recipe("小雞燉蘑菇","湘菜",100,

new String[]{

"小雞",

"蘑菇"

},

new String[]{

"準備好主要食材",

"加入食材慢燉兩至三小時"

});

recipes[3]=new Recipe("地三鮮","川菜",25,

new String[]{

"茄子",

"辣椒"

},

new String[]{

"準備好主要食材",

"加入食材慢燉"

});

recipes[4]=new Recipe("西紅柿","湘菜",20,

new String[]{

"西紅柿",

"味達美醬油"

},

new String[]{

"準備好主要食材",

"加入食材慢燉"

});

System.out.println("找到所有名稱中包含牛肉的菜譜:");

Recipe[] result_1 = searchRecipesContainName(recipes, "牛肉");

print(result_1);

System.out.println("\n希望查找所有湘菜的菜譜:");

Recipe[] result_2=searchRecipes(recipes,"湘菜");

print(result_2);

System.out.println("\n查找烹飪時長小于30分鐘的菜譜:");

Recipe[] result_3=searchRecipeLessThan(recipes,30);

print(result_3);

System.out.println("\n查找包含西紅柿的菜譜:");

Recipe[] result_4=searchRecipeContainsFood(recipes,"西紅柿");

print(result_4);

}

}

Java簡單算法問題

初步做了一個出來,但是效率并不是很高,前100個計算速度還可以,但是往后就很慢了。如果什么時候有空的話可以再看看,先給你代碼吧,不知道能不能幫上你

public?class?AlisandaNumber?{

private?static?final?int?MAX_INDEX?=?1000;?//?可以先把這個常量改為1-6,驗證正確性

public?static?void?main(String[]?args)?{

int?a?=?0;

int?index?=?0;

while(index??MAX_INDEX)?{

a?+=?6;?//?每次循環(huán)自增6,由題目規(guī)律可知A是6的倍數(shù)

boolean?breakOut?=?false;

//?最大的約數(shù)為此數(shù)的平方根,因為如果是兩個平方根相乘的話,剩下的就只有1了

int?maxNum?=?(int)?Math.ceil(Math.sqrt(a));

p:

for(int?p?=?1;?p?=?maxNum;?p?++)?{

if(a?%?p?!=?0)?{

continue;?//?如果不是約數(shù)的話,沒必要考慮,下同

}

//?最大約數(shù)為平方根的相反數(shù),原理同上

maxNum?=?(int)?Math.ceil(Math.sqrt(a?/?p));

for(int?q?=?-1;?q?=?-maxNum;?q?--)?{?//?q和r必為負數(shù)

if(a?%?q?!=?0)?{

continue;

}

int?r?=?a?/?(p?*?q);

int?nonZero?=?p?*?q?+?p?*?r?+?q?*?r;

if?(nonZero?==?0)?{

continue;

}

if((a?==?p?*?q?*?r)??(a?==?(p?*?q?*?r)?/?(nonZero)))?{

index?++;

breakOut?=?true;

break?p;?//?跳出外層循環(huán)

}

}

}

if(breakOut)?{

System.out.println(String.format("第%d個壓力山大數(shù)是%d",?index,?a));

}

}

}

}

分享名稱:java生成泡泡糖代碼 java消滅泡泡糖
當(dāng)前路徑:http://bm7419.com/article12/ddegjdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈電子商務(wù)微信小程序、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)