Як склаліся ліку з радкоў JAVA

Добрага ўсім часу сутак. Папрашу глянуць на код і сказаць, дзе я натупил))

import java.util.Scanner;public class Zad3 { 
public static void main(String[] args) {
char c = ' ';
char d = ' ';
int symma=0;
Scanner scan = new Scanner(System.in);
System.out.println("Vvedite 4isla");
String str = scan.next();
for(int i=0;i c = str.charAt(i);
d = str.charAt(i+1);
symma = (int)c+(int)d;
}
System.out.println(symma);
}}

Не ўдаючыся ў халівар датычна якасці кода і параўнання c C # (sic!), Адзначу, што ключавое месца дзе ў вас памылка гэта радкі:

c = str.charAt(i);   
d = str.charAt(i+1);
symma = (int)c+(int)d;

Пры такім падыходзе ваш код сумуе бінарныя значэння cі d, а хацелася, мабыць лікавых значэнняў.

неабходна:

  1. Разбіць радок іх уваходнага патоку на 2 радкі нейкім падзельнікам, напрыклад прабел - тады String[] s=str.split(" ");
  2. Атрыманыя радкі распарсить як лік тыпу: Double.parseDouble(s[i]);

Код не прэтэндуе на званне ідэальнага, але я спецыяльна спрасціў яго. Паспрабуйце самі зразумець навошта і як працуе кожны радок, функцыя і сімвал.

Scanner scan = new Scanner(System.in);
System.out.println("Vvedite 4isla 4erez probel");
String str = scan.next();
String[] numbers = str.split(" ");
int res = 0;
try{
for (String s : numbers) {
res += Integer.parseInt(s);
}
System.out.println("Summa: " + res);
} catch(Exception e) {
System.out.println("Vveli ne chisla!");
}

Усё яшчэ шукаеце адказ? Азнаёмцеся з іншымі пытаннямі, якія змяшчаюць пазнакі java, або задайце сваё пытанне.

JAVATALKS.RU / Сума лікаў двухзначны лік

Па-першае, хвала вам за тое, што вы не збіраецеся адразу пісаць сістэму па кіраванні чым-небудзь, у якую ўваходзяць наварочаны інтэрфейс, працу з базай дадзеных і ўсякія там сэрвлета або іншую падобную вебовскую радасць!

Па-другое, задачы (цыклы і ўмоўныя пераходы):
1. З прамежку ад 0 да 100 уключаючы вывесці цотныя лікі і няцотныя, дзеляцца на 7. Не выводзіць колькасці ў прамежку [45..55] (уключае колькасці 45 і 55). Выкарыстоўваць тернарный аператар хоць бы раз.

2. Уводзіцца паслядоўнасць лікаў. Увод колькасці 0 азначае канец паслядоўнасці. Вывесці суму ўсіх лікаў, іх колькасць. Таксама вывесці ўсе лікі, якія задавальняюць умове задачы 1.

3. задаліся радок. Вывесці яе посимвольно з цэнтра: "puerta" => "ertupa", "abogado" => "gaobdoa", "peninsula" => "nsinulepa". Ўскладненне: калі гэта сімвал галосны (любой з euioa), то яго прапусціць ( "abogado" => "gdb", "peninsula" => "nsinulepa", "peninsula" => "nsnpl")

4. задаліся квадратная матрыца (двухмерных масіў) выгляду:
[1 2 3]
[4 5 6]
[7 8 9], дзе колькасці абазначаюць пазіцыі (там могуць знаходзіцца любыя лічбы). Матрыца можа быць не толькі 3х3, але і 4х4, 5х5 і г.д.
Вывесці элементы матрыцы ў паслядоўнасцях 541236987 (раскручванне з цэнтра), 123698745 (закручванне ў цэнтр), 123654789 (зигзагиком).

5. задаюць некаторыя лік. Вызначыць, ці знаходзіцца яно ў прамежку [55..444) - ад 55 уключаючы да 444 не ўключаючы і дзеліцца яно на 2 і на тры (адначасова). Калі ўмова выконваецца, то даведацца, ці з'яўляецца яно двухзначных або трезначным. Для двухзначны лік вывесці яго, для трохзнакавага пераставіць першую і трэцюю лічбу і вывесці атрыманае лік. Калі ўмовы не выконваюцца, то вывесці адпаведнае паведамленне.

П.С. Яшчэ можаце адкрыць кнігу «Філасофія Джавы" ад Эккеля - там павінны быць задачы ў канцы кожнай кіраўніка. Калі зробіце задачы, то можам яшчэ вам падкінуць немного.Software and cathedrals are much the same - first we build them, then we pray.

НАДО ў радок ЗНАЙСЦІ ВСЕ ЛІЧБЫ І палічаць іх СУМУ - кампутарныя ...

Трэба ў радку знайсці ўсе лічбы і палічыць іх суму. Трэба выкарыстоўваць parseInt або valueOf?

імпарт java.util . *; 
грамадскага класа sumOfString {
    дзяржаўнай статычнай сілы асноўных (String [] Арг) {
    Сканер у = новы сканар (System.in);
    System.out.print ( "Калі ласка, увядзіце радок:");
    Радок вул = in.nextLine ();
    калі (! str.matches ( "^ \\\\ D * $")) {
        ???
        //System.out.println("сумма ");
        } Яшчэ {
        System.out.println ( "няма лічбаў");
        }
}
}

дзякуй

На маю думку, прасцей спрабаваць ператварыць радок у лік, а калі вылецела выключэнне, значыць не лік. Код становіцца больш зразумела:

падкажыце, калі ласка, як мага код Элегантна зрабіць =)

імпарт java.util . *; 
грамадскага класа сума {
    дзяржаўнай статычнай сілы асноўных (String [] Арг) {
    Сканер у = новы сканар (System.in);
    System.out.print ( "Калі ласка, увядзіце радок:");
    Радок вул = in.nextLine ();
    Int А [] = новы INT [100];
    INT лік = 0;
    INT вынік = 0;
    для (INT I = 0; г
         калі (Character.isDigit (str.charAt (я))) {
         лік = Integer.valueOf (str.substring (I, I + 1)) .intValue ();
         а [I] = лік;
         Вынік + = а [I];
        }
       
    }
    System.out.println (вынік);
}
}

у мяне пакуль атрымалася толькі вось гэта (

імпарт java.util.Scanner; 
грамадскі клас паўтор {
    адкрыты статычныя радкі паўтор (ідэалам с, Int я)
    {
    Радок TST = «»;
    для (Int J = 0; J <я; j ++)
        {
        TST = TST + с;
    }
    Вярнуць TST;
}
    Дзяржаўнай статычнай сілы асноўных (String [] Арг) {
    Сканер у = новы сканар (System.in);
    System.out.print ( "Калі ласка, увядзіце радок:");
    Радок вул = in.nextLine ();
    INT лік = 0;
    для (INT I = 0; г
         калі (Character.isDigit (str.charAt (я))) {
        лік = Integer.valueOf (str.substring (I, I + 1)) .intValue ();
        Радок strR = str.substring (0, я) + паўтор (г + 1, колькасць);
        System.out.println (strR);
         }
    }
   
}
}

а вынік такой:
Увядзіце радок: A3D
a333

Чаму ён паўтарае 3ку, а не ў
і як мне дадаць астатнюю радок, пасля паўтору?
г.зн. напрыклад
a3dk5rty
adddkrrrrrty

Па-першае, прынята называць класы ў Java c вялікай літары (падрабязней тут: Code Conventions for the Java (TM) Programming Language: Contents)

Па-другое, не абавязкова ператвараць інтэгральны клас (Integer) у прымітыўны (int) відавочна. Можна проста пісаць:

Па-трэцяе, няправільна напісана функцыя repeat.

Па-чацвёртае, рэкамендую карыстацца якой-небудзь IDE і адладкай (я рэкамендую IntelliJ Idea Community Edition IntelliJ IDEA :: Download Latest Version of IntelliJ IDEA)

напэўна, я зусім заблыталася (((

імпарт java.util.Scanner; 
грамадскага класа RepeatC {
    адкрытыя статычныя радкі паўтору (String слова, лік цэлае) {
              Радок = "";
              для (INT I = 0; я <лік; я ++) {
                калі (I + 1 == лічыльнік) {
                  а = а + слова;
                } Яшчэ {
                    а = а + слова;
                }
              }
              Вяртаюць;
            }
   
    Дзяржаўнай статычнай сілы асноўных (String [] Арг) {
    Сканер у = новы сканар (System.in);
    System.out.print ( "Калі ласка, увядзіце радок:");
    Радок вул = in.nextLine ();
    Радок strR = "";
    INT лік = 0;
    INT Len = 0;
    асмальваецца [] StringArray;
    для (INT I = 0; г
         калі (Character.isDigit (str.charAt (я))) {
        лік = Integer.valueOf (str.substring (I, I + 1)) .intValue ();
        Len = str.length ();
        strR = str.substring (0, я) + паўтор (str.substring (I + 1, I + 2), нумар) + str.substring (I + 2, даўжыня);
       
     }
    }
    System.out.println (strR);
}
}

Чаму адказ такі?
Увядзіце радок: d6gh7jk9l
d6gh7jklllllllll

Не магу зразумець як гэта выправіць (((

паправіла ледзь-ледзь код

імпарт java.util.Scanner; 
грамадскага класа RepeatC {
    адкрытыя статычныя радкі паўтору (String літара, лік цэлае) {
              Радок = "";
              для (INT I = 0; я <лік; я ++) {
                      а = а + літара;
              }
              Вяртае;
    }
   
    Дзяржаўнай статычнай сілы асноўных (String [] Арг) {
    Сканер у = новы сканар (System.in);
    System.out.print ( "Калі ласка, увядзіце радок:");
    Радок вул = in.nextLine ();
    Радок strR = "";
    INT лік = 0;
    INT Len = 0;
        для (INT I = 0; г
         калі (Character.isDigit (str.charAt (я))) {
        лік = Integer.valueOf (str.substring (I, I + 1)) .intValue ();
        Len = str.length ();
        strR = str.substring (0, я) + паўтор (str.substring (I + 1, I + 2), нумар) + str.substring (I + 2, даўжыня);
       
     }
    }
    System.out.println (strR);
}
}

але памылка ўсё роўна застаецца (((
Калі ласка, увядзіце радок: a3dl2kl
a3dlkkl

strR = str.substring (0, я) + паўтор (str.substring (I + 1, I + 2), нумар) + str.substring (I + 2, даўжыня);

Ты кожны раз перапісваюць значэнне зменнай strR. Трэба захоўваць.

Мабыць, алгарытм можа быць такі:
1) калі лічбу не сустракалі, то бягучы сімвал трэба паўтарыць адзін раз.
2) калі сустрэлі лічбу N, то наступны за лічбай сімвал трэба паўтарыць N раз.

Інакш:
калі перад сімвалам стаяла лічба N, то сімвал трэба напісаць N раз, інакш - толькі адзін раз.

Заўважу, што для змяняных радкоў лепш выкарыстоўваць StringBuilder, што б кожны раз не вылучалася новая памяць. Больш падрабязна тут: skipy.ru: Запіскі цвярозага практыка -> Тэхніка -> Ах, гэтыя радкі ...

Такім чынам, шуканы код можа быць напісаны як-то так:

імпарт java.util.Scanner; 

грамадскага класа RepeatC {

    дзяржаўнай статычнай сілы асноўных (String [] Арг) {
        Сканер у = новы сканар (System.in);
        System.out.print ( "Калі ласка, увядзіце радок:");
        Радок вул = in.nextLine ();

        StringBuilder strR = новы StringBuilder ();
        INT RepeatCount = 1; // калі апошні знак не лічба => наступны знак павінен быць дададзены адзін раз
        для (INT I = 0; я
            канчатковы сімвал currentChar = str.charAt (я);
            калі (Character.isDigit (currentChar)) {
                RepeatCount = Integer.parseInt (str.substring (I, I + 1));
            } Яшчэ {
                для (Int i1 = 0; i1
                    strR.append (currentChar);
                }
                RepeatCount = 1;
            }
        }

        System.out.println (strR.toString ());
    }
}

Чытай на іншых мовах

 беларускіанглійская Нямецкі іспанскі французскі італьянскі партугальская турэцкі арабская ўкраінскі шведскі венгерская балгарскі эстонскі Кітайскі (спрошчаны) в'етнамская румынская тайская славенская славацкая сербская малайская нарвежская латышская Літоўскі карэйская японскі інданезійская хіндзі іўрыт фінскі грэцкі нідэрландская чэшскі дацкая харвацкая Кітайскі (традыцыйны) тагальская урду Азейбарджанский армянскіпольскі бенгальская грузінскі казахскі каталонская Mongolski руская Таджитский Tamil'skij тэлугу Узбецкий

Чытай яшчэ:   ЯК З WINDOWS 8 зайсці ў BIOS

дадаць каментар

Ваш e-mail не будзе апублікаваны. Абавязковыя палі пазначаныя *